Zeichnen Sie in MKMapView einen Kreis mit einem Umkreis von 1000 m um den Benutzerstandort
(Mit iOS 5 und Xcode 4.2)
Ich habe eine MKMapView und möchten einen Kreis zeichnen, der von 1000m radius um den Standort der Benutzer ab.
Auf der Oberfläche scheint es, dass die Umsetzung der mapView:viewForAnnotation: Karte anzeigen delegate-Methode, und hinzufügen eines benutzerdefinierten MKAnnotationView für die Benutzer, Standort, wäre eine perfekte Lösung. Es würde in etwa so Aussehen:
- (MKAnnotationView *)mapView:(MKMapView *)mapView
viewForAnnotation:(id <MKAnnotation>)annotation
{
//If it's the user location, return my custom MKAnnotationView.
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return myCustomAnnotationView;
} else {
return nil;
}
}
Jedoch Beschriftungen auf der Karte nicht skaliert werden, wenn Sie ein-und Auszoomen der anzeigen.
So, ich habe versucht, hinzufügen einer overlay - (weil-overlays-Skala mit der Karte), mit der MKCircle Klasse und der Festlegung Ihrer Koordinaten auf die aktuellen Koordinaten von meinem locationManger/Karte anzeigen delegieren. Doch als der koordinieren Eigenschaft von MKCircle ist readonly, ich habe zum entfernen der overlay dann einen neuen hinzufügen, jedes mal, wenn sich der Benutzer bewegt. Was zu einer deutlichen flimmern, wie es geschieht.
Gibt es eine Möglichkeit, um eine Anmerkung Skala nahtlos wie die map-Ansicht skaliert in und out? Oder ist es ein guter Weg, um ein overlay nahtlos mit änderungen in der Benutzer-Standort?
Ich wäre für Eure Hilfe sehr dankbar 🙂
InformationsquelleAutor der Frage Jon Cox | 2012-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen, eine benutzerdefinierte overlay. Fügen Sie diese in viewDidLoad:
userLocation kann erhalten werden, indem das speichern der MKUserLocationAnnotation als Eigenschaft. Dann, um tatsächlich zeichnen des Kreises, setzen Sie diese in die map-Ansicht der Delegierten:
InformationsquelleAutor der Antwort benwad
Einer aktualisierten version für iOS 8.0 über Swift.
InformationsquelleAutor der Antwort vladCovaliov
Swift 3/Xcode 8 hier:
Rufen Sie dann gerne so:
InformationsquelleAutor der Antwort thexande
Versuchen, verwenden Sie den code aus Apple klickpfadbeispiel
InformationsquelleAutor der Antwort Shmidt
Ich nicht verstehen benwad Antwort. So, hier ist klarer beantworten:
Ist es ziemlich einfach, fügen Sie einen Kreis. Entsprechen MKMapViewDelegate
In viewDidLoad, Erstellen Sie einen Kreis annotation und fügen Sie es zur Karte:
Dann implementieren mapView:viewForOverlay: die Rückkehr der anzeigen.
Aber wenn Sie wollen, dass der Kreis immer die gleiche Größe, unabhängig von der zoom-Stufe, Sie haben etwas anderes zu tun. Wie Sie sagen, in regionDidChange:animated:, Holen Sie sich die latitudeDelta, dann erstellen Sie einen neuen Kreis (mit einem radius, der passt in der Breite), entfernen Sie die alte und die neue hinzufügen.
Anmerkung von mir: vergessen Sie nicht, eine Verbindung mapview mit Ihrem view-controller delegieren. Ansonsten viewForOverlay nicht genannt werden.
InformationsquelleAutor der Antwort RealNmae
Es ist einfach zu fügen Sie einen Kreis. Entsprechen MKMapViewDelegate.
Folgen Sie dem unten Schritte,,,
Schritt 1 :
Schritt 2 :
InformationsquelleAutor der Antwort Kupendiran iOS
Mit
MKCircleRenderer
könnten Sie in der Lage, fügen Sie es wie folgt.Erklären-Klasse-level-Variablen für das overlay und dessen renderer:
Implementieren
MKMapView.OverlayRenderer
bieten einen renderer, der für die überlagerung:Erstellen Sie ein overlay, in diesem Fall ein Kreis, der sich in der Nähe des user-Standort (Breitengrad, Längengrad), und fügen Sie es zur Karte:
InformationsquelleAutor der Antwort casillas
es ist veraltet seit iOS 4.0
InformationsquelleAutor der Antwort e a