每当用户放大或缩小 map 时,我都需要知道 map 上当前代表多少米(宽度或高度)。
我需要的是 MKCoordinateRegionMakeWithDistance 的反函数,以计算当前 map 跨度表示的距离。
我尝试了以下代码,但得到错误的结果:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
MKMapRect mRect = self.map.visibleMapRect;
MKMapPoint northMapPoint = MKMapPointMake(MKMapRectGetMidX(mRect), MKMapRectGetMinY(mRect));
MKMapPoint southMapPoint = MKMapPointMake(MKMapRectGetMidX(mRect), MKMapRectGetMaxY(mRect));
self.currentDist = MKMetersBetweenMapPoints(northMapPoint, southMapPoint);
}
如果我将 map 区域设置为1500米,则结果将类似于1800。
谢谢你的帮助,
文森特
最佳答案
实际上,这是一个非常愚蠢的错误,如果我沿X轴执行相同的操作,那么我将获得正确的值:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated {
MKMapRect mRect = self.map.visibleMapRect;
MKMapPoint eastMapPoint = MKMapPointMake(MKMapRectGetMinX(mRect), MKMapRectGetMidY(mRect));
MKMapPoint westMapPoint = MKMapPointMake(MKMapRectGetMaxX(mRect), MKMapRectGetMidY(mRect));
self.currentDist = MKMetersBetweenMapPoints(eastMapPoint, westMapPoint);
}
关于iphone - 在 map View 上将跨度值转换为米,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5270485/