convertCoordinate toPointToView使用倾斜贴图返回错误结果

时间:2014-02-28 18:04:25

标签: ios iphone mkmapview mapkit

我在地图上叠加了一个UIView,我在两个坐标之间的屏幕空间中使用

绘制一些图形
- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view

问题在于,当地图非常放大和倾斜(类似3D)时,离屏的坐标的像素位置不会保持一致。有时函数会返回NaN,有时会返回正确的数字,而其他函数会跳转到屏幕的另一侧。

不确定如何更好地解释它。有没有人碰到这个?

1 个答案:

答案 0 :(得分: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