MKMapKit Heading

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MKMapKit Heading

    Hallo, ich habe ein kleines Problem mit dem MapKit. Ich kenne die property userTrackingMode, möchte diese allerdings aufgrund mancher Gründe nicht benutzen (zoom etc). Dennoch möchte ich gerne die Möglichkeit in meiner App geben bei neigen des Gerätes auch die Map zu neigen (MKUserTrackingModeFollowWithHeading nachahmen). Sämtliche Ortupdates, setzten des Zooms und Maßstab etc klappt bereits nur das eben nicht. Ich dachte mir um das zu implementieren nehme ich ein UIImageView hefte diesen an meinen userLocation Punkt und drehe die Map dann je nach Heading:

    Quellcode

    1. - (void)locationManager:(CLLocationManager *)manager
    2. didUpdateHeading:(CLHeading *)newHeading
    3. {
    4. self.headingAngleView.center = [map convertCoordinate:map.userLocation.coordinate toPointToView:self.view];
    5. CGRect newFrame = self.headingAngleView.frame;
    6. newFrame.origin.y -= self.headingAngleView.frame.size.height / 2 + 8;
    7. self.headingAngleView.frame = newFrame;
    8. [map setTransform:CGAffineTransformMakeRotation(heading.magneticHeading * M_PI / -180.0)];
    9. }
    Alles anzeigen


    Das klappt eigentlich auch sehr gut das einzige Problem dabei ist, dass ich MKTileOverlays von OpenStreetMap verwende und nicht die Apple Maps. Daher ist nur das eine Tile geladen und beim transformieren der Map bekomme ich halt überall whitespace neben der Map weil halt nur 1 Tile geladen wurde. Das heißt ich muss nicht die Map, sondern den UIImageView abhängig vom Heading transformieren, doch das will mir irgendwie gar nicht gelingen. Ansonsten noch jemand eine Idee wie ich das implementieren kann ?

    Am MKUserTrackingMode... stört mich halt wie gesagt, dass ich hier einen festgelegten Zoom Level habe, der (als ich das implementiert habe) noch nichtmal zuverlässig läuft. Zurzeit habe ich halt den zoomLevel und das tracken des Users über:

    Quellcode

    1. ​- (void) mapView:(MKMapView *)mapView
    2. didUpdateUserLocation:(MKUserLocation *)userLocation
    3. {
    4. MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(userLocation.location.coordinate,
    5. 2000,
    6. 2000);
    7. [map setRegion:region animated:YES];
    8. }
    Alles anzeigen

    gelöst.

    Also um konkret die Frage nochmal zu formulieren: Wie kann ich es schaffen, dass ich bei Drehung des iPhones/iPads meine Kartenansicht mitdrehen kann und gleichzeitig dem User anzeigen kann in welche Richtung er ungefähr gehen wird ?