iPhone 4和iPhone 5上的不同地图缩放

时间:2013-01-14 13:00:32

标签: iphone ios mapkit

我正在为我的项目使用MapKit,到目前为止它已经非常好了。这是我用于显示和居中地图的一大块代码。

CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast];


MKCoordinateRegion region;
region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;
region.span.latitudeDelta = meters / 111319.5;
region.span.longitudeDelta = 0.0;

[self.mapView setRegion:region animated:YES];

问题是,它在iPhone 4 和iPhone 5 不同

这是 iPhone 4 iOS5和iOS6的结果相同):

iPhone 4

这里是 iPhone 5 (使用相同的坐标):

iPhone 5

有没有人经历过相同的事情?

2 个答案:

答案 0 :(得分:1)

这些是引起差异的代码行:

region.center.latitude = (southWest.latitude + northEast.latitude) / 2.0;
region.center.longitude = (southWest.longitude + northEast.longitude) / 2.0;

由于屏幕尺寸不同,因此必然会产生差异。

在这里,您可以使用mapView.centerCoordinate

来对地图进行居中

答案 1 :(得分:1)

MapKit具有固定的缩放级别。设置地图的区域可确保该区域在地图中可见,但不会设置精确缩放。这有几个好处,主要的好处是你不能创建一个不成比例地缩放纬度和经度的地图(导致混乱和/或误导性的地图)。地图的框架大小不同,因此您选择的区域可以在每个设备上以不同的缩放级别显示。

作为实验,请尝试在两台设备上将地图视图的框架设置为相同的尺寸。然后,如果你绝对需要以相同的比例显示地图,你可以做一些数学计算,根据地图的框架计算适当的区域。