我在地图上叠加了一个UIView,我在两个坐标之间的屏幕空间中使用
绘制一些图形- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
问题在于,当地图非常放大和倾斜(类似3D)时,离屏的坐标的像素位置不会保持一致。有时函数会返回NaN,有时会返回正确的数字,而其他函数会跳转到屏幕的另一侧。
不确定如何更好地解释它。有没有人碰到这个?
答案 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