开发者

Coordinates of bottom-left corner of a mapView off by a few pixels

I'm trying to put an Annotation the lower left corner of currently visible map region, although the following code

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);
}

where SimpleAnnotation is as simple as it gets; puts the pin point a few degrees off the actual corner:

Coordinates of bottom-left corner of a mapView off by a few pixels

On the right side zoom level is higher, and as you can see the mistake is significantly small开发者_运维问答er.

I've tried doing some math to counter it, considering that the error may be something related to projecting elliptical coordinates onto a plane, but didn't come up with anything useful.

Has anyone solved this problem? I've noticed that latitude values are not 'linear' on a mapView, I need some hints to understand how to transform them.


I don't know if this will work but I suggest you try letting the map view convert view coordinates to map coordinates with convertPoint:toCoordinateFromView:.

For example:

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜