2014-02-28 29 views
5

我有一個UIView在地圖上疊加,而我使用convertCoordinate toPointToView返回糟糕的結果與傾斜地圖

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

問題繪製一些圖形在屏幕空間兩個座標之間是當地圖非常放大並傾斜(類似於3D),座標的像素位置在屏幕外停止時保持一致。有時函數返回NaN,有時會返回正確的數字,有些則跳轉到屏幕的另一側。

不知道我怎麼能更好地解釋它。有沒有人遇到過這個?

回答

0

在研究過程中發現了許多解決方案。任何解決方案都可能適合你。

解決方法:1

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

解決方案: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 

注意:使用緯度的負經度時一定要加上或減去負數字,即+( - 92)或 - ( - 35),這實際上是-92和+35