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

Luc*_*Luc 2 google-maps objective-c mkmapview ios

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

...
// 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];
...
Run Code Online (Sandbox Code Playgroud)

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

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

任何的想法 ?

小智 7

latitudeDeltalongitudeDelta是在这样的0.06的值是在千米相对小的距离.要显示"地球的一半",您必须将其设置longitudeDelta为180.0.

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

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

MKCoordinateRegion newRegion = 
    MKCoordinateRegionMakeWithDistance(newCenter, 200000, 200000);
Run Code Online (Sandbox Code Playgroud)

最后两个参数是latitudinalMeters,longitudinalMeters因此上面的示例将跨度设置为200 km x 200 km.

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