我正在尝试将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上的纬度值不是“线性的”,我需要一些提示来理解如何转换它们。
答案 0 :(得分:2)
我不知道这是否有效,但我建议您尝试让地图视图将视图坐标转换为convertPoint:toCoordinateFromView:
的地图坐标。
例如:
CGPoint bottomLeftPoint = CGPointMake(CGRectGetMinX(map.bounds), CGRectGetMaxY(map.bounds));
CLLocationCoordinate2D bottomLeftCoord = [map convertPoint:bottomLeftPoint toCoordinateFromView:map];