将MKMapView上的距离转换为UIView的距离

时间:2011-12-07 08:02:45

标签: iphone objective-c xcode mkmapview mapkit

如何将MKMapView上的距离(例如400米)转换为UIView的距离? 我想显示MKAnnotationView,它取决于MKMapView上的当前缩放级别。

2 个答案:

答案 0 :(得分:9)

首先,创建一个长度为400米的区域:

MKCoordinateRegion myRegion = MKCoordinateRegionMakeWithDistance(mapView.centerCoordinate, 400, 0);

之后使用转换区域方法获取真正的矩形:

CGRect myRect = [mapView convertRegion: myRegion toRectToView: nil];
NSLog(@"width for 400m is %f", myRect.size.width);

希望,这有帮助。

答案 1 :(得分:5)

MKMapView中有几个选择器可将屏幕上的UIView坐标转换为地理坐标(以及geo - >屏幕):

- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view
- (CLLocationCoordinate2D)convertPoint:(CGPoint)point toCoordinateFromView:(UIView *)view

我假设400米是2个坐标之间的距离,所以你应该参考2 CLLocationCoordinate2D个结构。
只需使用- (CGPoint)convertCoordinate:(CLLocationCoordinate2D)coordinate toPointToView:(UIView *)view获取相应的CGPoint(=屏幕坐标),然后您就可以计算屏幕距离了。