为什么我只能反转中国境内的地理编码位置?
Why can I only reverse geocode location that are inside China?
我使用 Apple 的 CLGeocoder
,当我检索地标的地址字典时,它对于中国境内的位置是预期的,但对于其他国家/地区的请求是空的。
CLGeocoder
不是应该在全球范围内工作吗?
这是我打印 addressDictionary
时得到的结果:
[FormattedAddressLines: (
""
), CountryCode: ]
我尝试将我的设备设置为英文,因为我知道它会更改 addressDictionary
的内容,但没有成功。
Apple 为位于中国的用户使用高德地图,不允许访问国外位置的地图相关数据。所以我认为没有办法在中国以外的地方使用 CLGeocoder。我想我会在那种情况下使用 Google API。
经过一些测试后,Geocoder 服务有两种设置:
- 高德 (amap.com) 中国大陆用户
- Apple Map 世界其他地区(我没有尝试过所有国家)
正如您所解释的,高德服务无法对中国大陆以外的位置使用地理编码。
打印出 [CLPlacemark]
即可看到这两个服务
我们可以看到不一样的version_domain:
对于中国:
"version_domain" = (
autonavi,
revgeo,
cn );
中国以外(日本):
"version_domain" = (
apple,
revgeo,
JP );
怎么办?
好吧,即使有时 Geocode 可能有效,我们也不能依赖它。我们也不能依赖 Google,因此您可以查看 Nokia Here Map。否则你应该改变你的应用程序与中国用户互动的方式。或许你可以只为中文AppStore发布一个特定的应用程序。
如何在开发过程中更改Geocoder?
就我而言,只要我连接到中国 phone 运营商(例如:中国移动),地图就会切换到高德。使用 Wifi 也会产生同样的效果。
我做的是使用飞行模式,然后连接到中国境外的VPN,最后我杀掉并重启我的应用程序。
您需要在模拟器上模拟位置,然后在您的 Mac 上使用 VPN。
结论
中国对开发者来说并不容易,但我相信总有解决办法。
我使用 Apple 的 CLGeocoder
,当我检索地标的地址字典时,它对于中国境内的位置是预期的,但对于其他国家/地区的请求是空的。
CLGeocoder
不是应该在全球范围内工作吗?
这是我打印 addressDictionary
时得到的结果:
[FormattedAddressLines: (
""
), CountryCode: ]
我尝试将我的设备设置为英文,因为我知道它会更改 addressDictionary
的内容,但没有成功。
Apple 为位于中国的用户使用高德地图,不允许访问国外位置的地图相关数据。所以我认为没有办法在中国以外的地方使用 CLGeocoder。我想我会在那种情况下使用 Google API。
经过一些测试后,Geocoder 服务有两种设置:
- 高德 (amap.com) 中国大陆用户
- Apple Map 世界其他地区(我没有尝试过所有国家)
正如您所解释的,高德服务无法对中国大陆以外的位置使用地理编码。
打印出 [CLPlacemark]
我们可以看到不一样的version_domain:
对于中国:
"version_domain" = (
autonavi,
revgeo,
cn );
中国以外(日本):
"version_domain" = (
apple,
revgeo,
JP );
怎么办?
好吧,即使有时 Geocode 可能有效,我们也不能依赖它。我们也不能依赖 Google,因此您可以查看 Nokia Here Map。否则你应该改变你的应用程序与中国用户互动的方式。或许你可以只为中文AppStore发布一个特定的应用程序。
如何在开发过程中更改Geocoder?
就我而言,只要我连接到中国 phone 运营商(例如:中国移动),地图就会切换到高德。使用 Wifi 也会产生同样的效果。
我做的是使用飞行模式,然后连接到中国境外的VPN,最后我杀掉并重启我的应用程序。
您需要在模拟器上模拟位置,然后在您的 Mac 上使用 VPN。
结论
中国对开发者来说并不容易,但我相信总有解决办法。