对于iOS 6上的中国地图,MapKit似乎根据设备所在的位置选择地图提供商。如果你在中国,它将使用AutoNavi地图,否则它将使用默认的Apple地图。更复杂的是,AutoNavi地图的转换方式与iOS 5上的Google地图相同,而默认的Apple地图不会被转换。
通过转换我在谈论all maps in China are transformed的事实,尽管事实并非如此。相反,中国的一些地图会被转换,而有些则不会。
此变换使得难以在地图上正确放置注释,因为地图通常偏移约500米。由于无法反转实际地图的变换,因此解决方案是将相同的偏移应用于注释。
There exists non-trivial ways to inverse the transform, at least for limited areas. iOS 6中的问题是知道地图是否被转换为能够适当地补偿注释。在iOS 5上,由于转换后的地图一致使用,因此不存在此问题。
下面的上海地图说明了情况(未演示实际的变换偏移)。
那么,在运行时是否有任何方法可以了解是否使用了转换或未转换的中国地图?处理这个的其他想法?
编辑:通过中国代理路由网络流量会更改模拟器中的地图外观,因此地图提供商的选择必须基于IP。
答案 0 :(得分:1)
如果你绝对需要一致性,你总是可以使用Bing Maps SDK - 这是iOS版本之间以及美国或中国人之间的一致性。虽然我建议坚持使用MapKit。
答案 1 :(得分:1)
这是关于火星坐标系。 看一下这个: https://github.com/Mardinate/Mardinate
答案 2 :(得分:0)
你能不能通过手机获取地理数据,如果他们在中国,则应用转换后的注释?