高德地图web sdk adcode不准确
背景
geocoder.getAddress(逆地理)拿到的adcode数据和getDistrictByContainerPos拿到的adcode是不一样的。
ps:接口也是通过逆地理拉取的历史数据,也存在数据不精准性。高德的adcode变更还算是频繁的
原因分析
表面原因
getDistrictByContainerPos是作为静态图层拉取到前端本地的,adcode并不是实时获取的,所以数据可能有滞后,未及时更新。
而geocoder.getAddress是实时接口拉取的,所以就出现了adcode不一致。
本质原因
getDistrictByContainerPos其实也是通过v3接口实时拉取的,但是他读取的数据确实历史数据缓存的。
原因很清晰:为了收费
getDistrictByContainerPos是免费的,而geocoder.getAddress是提供付费服务的。
就是为了收费服务而阉割了免费服务,人为的使数据不精准罢了,因为他的免费服务也是每次进入页面时,去实时调用高德接口的。只是返回的数据是历史的。
方案
1、使用逆地理,但需要避免高频使用场景(会导致产品交互降级)
2、手动更新我司数据库,使之与免费版adcode保持一致(存在一定的数据滞后)。