mapView左下角的坐标偏离几个像素

时间:2010-09-30 19:41:17

标签: iphone ios4 mapkit

我正在尝试将Annotation放在当前可见地图区域的左下角,但以下代码

CLLocationCoordinate2D origin = getOriginOfRegion(mapView.region);
[[[SimpleAnnotation alloc] initWithCoords:origin] autorelease];
...
extern CLLocationCoordinate2D getOriginOfRegion(MKCoordinateRegion region){
    return CLLocationCoordinate2DMake(region.center.latitude-region.span.latitudeDelta/2,
                                  region.center.longitude-region.span.longitudeDelta/2);
}

其中SimpleAnnotation就像它获得的那样简单;将引脚点放在离实际角落几度的位置:

在右侧,缩放级别更高,正如您所看到的,错误明显更小。

我已经尝试过一些数学来对付它,考虑到错误可能与将椭圆坐标投影到平面上有关,但没有提出任何有用的东西。

有没有人解决过这个问题?我注意到mapView上的纬度值不是“线性的”,我需要一些提示来理解如何转换它们。

1 个答案:

答案 0 :(得分:2)

我不知道这是否有效,但我建议您尝试让地图视图将视图坐标转换为convertPoint:toCoordinateFromView:的地图坐标。

例如:

CGPoint bottomLeftPoint = CGPointMake(CGRectGetMinX(map.bounds), CGRectGetMaxY(map.bounds));
CLLocationCoordinate2D bottomLeftCoord = [map convertPoint:bottomLeftPoint toCoordinateFromView:map];