iphone - iPhone 4 和 iPhone 5 上的不同 map 缩放

标签 iphone ios mapkit

我正在为我的项目使用 MapKit,到目前为止它一直非常好。这是我用来显示和居中 map 的一段代码。

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

有人遇到同样的情况吗?

最佳答案

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

作为实验,尝试将 map View 的框架在两个设备上设置为相同大小。然后,如果您绝对需要 map 以相同的比例显示,您可以进行一些数学运算,根据 map 的框架计算出适当的区域。

关于iphone - iPhone 4 和 iPhone 5 上的不同 map 缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14318887/

相关文章:

ios - 在 iPhone 中将多张图像合并为一张图像

ios - "Cannot find an initializer for type ' MKPlaceMark' 接受类型的参数列表

iphone - 在 Xcode 中打开原生谷歌地图

ios - 更新我的 map 后,Viewforannotation 将注释获取为 nil

ios - iOS 7.1 中 UIButton 的 setBackgroundImage 不起作用

iphone - 无法弄清楚如何发布在 iPhone 上生成的公钥

iphone - 在不使用自定义单元格编辑 UITableView 时更改单元格外观?

ios - 无法从 UIViewController 导航到 UICollectionViewController

ios - 带闭包的 UIGestureRecognizer

ios - MapKit:如何使用 .xib 文件上的按钮创建自定义注释 View ?