2014-02-28 6 views
5

Ich habe eine UIView auf einer Karte überschichtet, und ich habe einige Grafiken im Bildraum zwischen zwei der Koordinaten ZeichnungconvertCoordinate toPointToView mit gekippten Karten schlechte Ergebnisse Rückkehr

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view 

Das Problem ist, dass, wenn die Karte ist sehr gezoomt und geneigt (3D-artig), die Pixelposition der wegfallenden Koordinate hört auf, konsistent zu sein. Manchmal gibt die Funktion NaN zurück, manchmal gibt sie die richtige Zahl zurück und andere springt auf die andere Seite des Bildschirms.

Nicht sicher, wie kann ich es besser erklären. Ist jemand darauf gestoßen?

Antwort

0

Während der Forschung haben viele Lösungen gefunden. Jede Lösung könnte Arbeit für Sie sein.

Lösung: 1

int x = (int) ((MAP_WIDTH/360.0) * (180 + lon)); 
int y = (int) ((MAP_HEIGHT/180.0) * (90 - lat)); 

Lösung: 2

func addLocation(coordinate: CLLocationCoordinate2D) 
    { 
     // max MKMapPoint values 
     let maxY = Double(267995781) 
     let maxX = Double(268435456) 

     let mapPoint = MKMapPointForCoordinate(coordinate) 

     let normalizatePointX = CGFloat(mapPoint.x/maxX) 
     let normalizatePointY = CGFloat(mapPoint.y/maxY) 
     print(normalizatePointX) 
     print(normalizatePointX) 
    } 

Solutuin: 3

x = (total width of image in px) * (180 + latitude)/360 
y = (total height of image in px) * (90 - longitude)/180 

Anmerkung: wenn negative Länge von Breitengrad verwenden, stellen Sie sicher, dass die negativen addieren oder subtrahieren Zahl ie + (- 92) oder - (- 35), die tatsächlich -92 und +35

wäre
Verwandte Themen