对于 iOS 6 上的中文地图,MapKit 似乎会根据您设备所在的位置来选择地图提供者。如果您在中国,它将使用 AutoNavi 地图,否则它将使用默认的 Apple 地图。更复杂的是,AutoNavi 地图的转换方式似乎与 iOS 5 上的 Google 地图相同,而默认的 Apple 地图并未进行转换。
变形我说的是中国所有的地图都是变形的,虽然这不是真的。相反,中国的一些地图是经过改造的,而有些则不是。
由于地图通常偏移约 500 米,因此这种变换很难在地图上正确放置注释。由于无法反转实际地图的变换,因此解决方案是将相同的偏移量应用于注释。
至少对于有限的区域,存在非平凡的方法来反转变换。iOS 6 中的问题是知道地图是否被转换为能够适当地补偿注释。在 iOS 5 上,这个问题不存在,因为转换后的地图一直使用。
下面的上海地图说明了这种情况(实际的变换偏移量没有演示)。
那么,有没有办法在运行时知道是否使用了转换或未转换的中国地图?处理这个问题的其他想法?
编辑:在中国通过代理路由网络流量会改变模拟器中的地图外观,因此地图提供商的选择必须基于 IP。