缩放级别限制在我的谷歌地图iOS应用程序中

时间:2011-12-29 12:52:18

标签: objective-c ios google-maps mkmapview

我使用以下代码在用户的位置显示地图中心:

...
// start off by default current position
AppManager *appManager = [AppManager sharedManager];
MKCoordinateRegion newRegion;
newRegion.center.latitude = [appManager.currentlatitude floatValue];
newRegion.center.longitude = [appManager.currentlongitude floatValue];
newRegion.span.latitudeDelta = 0.06;
newRegion.span.longitudeDelta = 0.06;
[self.mapView setRegion:newRegion animated:YES];
[self.view insertSubview:mapView atIndex:0];
...

问题是,当使用“newRegion.span.latitudeDelta”和“newRegion.span.longitudeDelta”值时,我无法充分降低缩放级别。当我想拥有几百个时,变焦只显示一个30公里宽的区域。

对于我所看到的,longitudeDelta的值0.06应该显示180 degre(地球的一半)(对于纬度0),然后对于纬度43,我认为我应该看到超过30 km。

有什么想法吗?

1 个答案:

答案 0 :(得分:7)

latitudeDeltalongitudeDelta位于中,因此值0.06是相对较小的距离(km)。要显示“地球的一半”,您必须将longitudeDelta设置为180.0。

如果您知道要显示的距离(例如以km为单位),则可以更轻松地使用MKCoordinateRegionMakeWithDistance功能而不是尝试自行进行转换:

CLLocationCoordinate2D newCenter = 
    CLLocationCoordinate2DMake([appManager.currentlatitude floatValue], 
                               [appManager.currentlongitude floatValue]);

MKCoordinateRegion newRegion = 
    MKCoordinateRegionMakeWithDistance(newCenter, 200000, 200000);

最后两个参数是latitudinalMeterslongitudinalMeters,因此上面的示例将范围设置为200 km x 200 km。

请记住,地图视图将根据地图视图的比例和可显示的缩放级别根据需要调整区域。