我正在为我的项目使用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 5 (使用相同的坐标):
有没有人经历过相同的事情?
答案 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具有固定的缩放级别。设置地图的区域可确保该区域在地图中可见,但不会设置精确缩放。这有几个好处,主要的好处是你不能创建一个不成比例地缩放纬度和经度的地图(导致混乱和/或误导性的地图)。地图的框架大小不同,因此您选择的区域可以在每个设备上以不同的缩放级别显示。
作为实验,请尝试在两台设备上将地图视图的框架设置为相同的尺寸。然后,如果你绝对需要以相同的比例显示地图,你可以做一些数学计算,根据地图的框架计算适当的区域。