2016-07-05 15 views
0

Ich habe erfolgreich ein MKPolygon über eine lokale mapView in Swift2.0 in einer iPhone App gezeichnet. Ich habe CLLocationCordinate2Ds importiert und das Ergebnis ist perfekt.MKMapPoint zu CGPoint

Mein eigentliches Ziel ist jedoch, dieses Overlay in einem UIView zu zeichnen, da die Grafik Teil einer Datenanalyse-App ist (wo Benutzer ein Diagramm als PNG erstellen und in PowerPoint usw. verwenden können). Ich dachte an einen UIBezierPfad.

Ich habe versucht, die mapView.convert-Methoden, um meine CLLocationCordinate2D zu einer anderen Ansicht und die Punkte sind sehr sehr nahe beieinander. ultimate aim

Wenn mein mapView wird 645W x 399h würde ich die schwarzen Punkte erwartet im Bereich von (ungefähr) zu sein (34, 93), (59, 160), (108, 165), (112, 193), (131,202) usw. (berechnet von der oberen linken Ecke).

Nichts funktioniert auf einer lokal skalierten Karte und ich bin für Ideen fest. Wirklich dankbar für Ratschläge.

Antwort

1

Jedes Mal, wenn Sie die Karte schwenken oder zoomen, wird der zugehörige CGPoint geändert. Wenn Sie also Ihre Koordinaten in CGPoint übersetzen, stellen Sie sicher, dass Sie Ihre Karte angepasst haben und nur Sie Kartenpunkte in CGPoint übersetzen.

Erstellen Sie eine UIView der gleichen Größe wie MKMapView. Fügen Sie MKMapView zu UIView hinzu. Dadurch wird sichergestellt, dass Sie denselben CGPoint mit Bezug auf Ihre übergeordnete Ansicht haben.

Die folgende Zeile hilft Ihnen dann, Ihre Kartenkoordinate in CGPoint zu übersetzen.

[self.mapView convertCoordinate:your_map_coordinate toPointToView:self.view] 
+0

Dies funktionierte ein Vergnügen. Mit diesem Ansatz habe ich ein Array von CGPoints erstellt und ein UIBezier in einer separaten Ansicht erstellt, gefüllt und gestreichelt. Vielen Dank –

+0

@RogerGardner Derzeit wird dieser Prozess durchlaufen und eine Frage zu meinem Problem gestellt. Wenn möglich, könnten Sie mir eine Lösung anbieten, mit der ich in den letzten Tagen zu kämpfen hatte? http://stackoverflow.com/q/41951229/5434541 – lifewithelliott