我正在尝试使用android.location.Geocoder
HMS(华为移动服务)设备上的 lat/long 坐标进行地理编码,但结果我一直得到一个空列表。
val result = geoCoder.getFromLocation(latitude, longitude, MAX_RESULTS) // [] on HMS
为了验证这实际上应该有效,我检查了Geocoder.isPresent()
哪个返回true
。
查看 LogCat 输出,我可以看到以下几行,这表明我缺少一些 API 密钥或没有正确配置某些东西......
XX/? I/HwGeoCoderProvider: [I/HwLocation/HwGeoCoderProvider 1877:388 HwGeoCoderProvider.java:136] onGetFromLocation: start to GetFromLocation
XX/? D/HwGeoCoderProvider: [D/HwLocation/HwGeoCoderProvider 1877:388 HwGeoCoderProvider.java:434] exceed max requesting limit
XX/? D/HwGeoCoderProvider: [D/HwLocation/HwGeoCoderProvider 1877:388 HwGeoCoderProvider.java:162] exceed max requesting limit
XX/? I/HwGeoCoderProvider: [I/HwLocation/HwGeoCoderProvider 1877:388 HwGeoCoderProvider.java:455] {callTime=..., service=hwLocation, rom_type=1001, transId={{some uuid}}, package=com.android.phone, apiName=GeoCode_getFromLocation, costTime=1, result=10400}
我在安装了最新 HMS Core 版本 (5.0.0.304) 的 P40 Pro 上进行了尝试。我之前收到过一些结果,所以它确实有效,但它显然达到了这个限制并停止工作。
如何android.location.Geocoder
在 HMS 设备上对纬度/经度进行地理编码?为了避免达到此限制,需要进行哪些配置/设置?
我已经看到提到使用位置/站点工具包的解决方法,但如果可能的话,我更喜欢使用“香草”Android API。