gpt4 book ai didi

JAVA google geocoding API 获取城市

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:45 29 4
gpt4 key购买 nike

我正在尝试使用谷歌地理编码 API 从纬度和经度获取国家和城市名称。本库https://github.com/googlemaps/google-maps-services-java作为 API 的 JAVA 实现。

这是我目前的做法:

GeoApiContext context = new GeoApiContext().setApiKey("AI... my key");
GeocodingResult[] results = GeocodingApi.newRequest(context)
.latlng(new LatLng(40.714224, -73.961452)).language("en").resultType(AddressType.COUNTRY, AddressType.ADMINISTRATIVE_AREA_LEVEL_1).await();

logger.info("Results lengh: "+ results.length);

for(int i =0; i< results[0].addressComponents.length; i++) {
logger.info("Address components "+i+": "+results[0].addressComponents[i].shortName);
}

问题是:AddressType.ADMINISTRATIVE_AREA_LEVEL_1 有 5 个级别,城市名称位于不同级别取决于特定位置/国家/地区。所以问题是——如何从结果中准确提取城市名称?或者我需要如何正确地形成请求?

附言它不是移动应用程序。

最佳答案

使用AddressComponentType.LOCALITY 获取city name来自 GeocodingResult

我是这样做的:

private PlaceName parseResult(GeocodingResult r) {

PlaceName placeName = new PlaceName(); // simple POJO

for (AddressComponent ac : r.addressComponents) {
for (AddressComponentType acType : ac.types) {

if (acType == AddressComponentType.ADMINISTRATIVE_AREA_LEVEL_1) {

placeName.setStateName(ac.longName);

} else if (acType == AddressComponentType.LOCALITY) {

placeName.setCityName(ac.longName);

} else if (acType == AddressComponentType.COUNTRY) {

placeName.setCountry(ac.longName);
}
}

if(/* your condition */){ // got required data
break;
}
}

return placeName;
}

关于JAVA google geocoding API 获取城市,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37020376/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com