如何解析Android版Google Places GeoDataApi中的地址(缺少地址组件)
我们使用与示例应用程序类似的GooglePlacesAPI预测。在选择结果时,我们使用以下方法获得预测位置的详细信息:如何解析Android版Google Places GeoDataApi中的地址(缺少地址组件),android,google-places-api,Android,Google Places Api,我们使用与示例应用程序类似的GooglePlacesAPI预测。在选择结果时,我们使用以下方法获得预测位置的详细信息: Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId); 这很好,我的问题是结果只包含一个字符串作为地址 使用时,结果包含以下内容: "address_components" : [ { "long_name" : "522", "short_name" : "522",
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId);
这很好,我的问题是结果只包含一个字符串作为地址
使用时,结果包含以下内容:
"address_components" : [
{
"long_name" : "522",
"short_name" : "522",
"types" : [ "street_number" ]
},
{
"long_name" : "Overtoom",
"short_name" : "Overtoom",
"types" : [ "route" ]
},
{
"long_name" : "Amsterdam-West",
"short_name" : "Amsterdam-West",
"types" : [ "sublocality_level_1", "sublocality", "political" ]
},
{
"long_name" : "Amsterdam",
"short_name" : "Amsterdam",
"types" : [ "locality", "political" ]
},
{
"long_name" : "Amsterdam",
"short_name" : "Amsterdam",
"types" : [ "administrative_area_level_2", "political" ]
},
{
"long_name" : "Noord-Holland",
"short_name" : "NH",
"types" : [ "administrative_area_level_1", "political" ]
},
{
"long_name" : "Nederland",
"short_name" : "NL",
"types" : [ "country", "political" ]
},
{
"long_name" : "1054",
"short_name" : "1054",
"types" : [ "postal_code_prefix", "postal_code" ]
}
],
但是在Android上使用API时,上面的地址\u组件中的信息丢失了。
我如何使用Google places API在Android上获取这些信息?不幸的是,答案是“你不能”
谷歌没有向该API的Android实现提供结构化响应数据
您可以尝试解析地址文本,但根据,这绝非小事:
你可以想出一个聪明的方法来解析这个字符串。不幸的是,整个地区的实际街道/郊区/城镇/省份结构并不一致
不同的地区(如南非开普敦)有不同的
句子结构(南非约翰内斯堡)。所以你的解析
规则必须非常聪明
您使用不同的谷歌API。JavaScript API为相关调用提供结构化数据。不幸的是,谷歌建议
反对使用这种技术
我的一位同事在Google上记录了这个问题:
Places SDK for Android现在支持地址\字段中的组件…:-) 你解决了吗??我也有同样的问题???不,我被迫使用js api来获取此信息。尝试使用Geocoder.getFromLocationName(String locationName,int maxResults)此解决方案的副作用是,此api返回的地址字符串可能与您从google map SDK提供的google PlacePicker活动中选择的地址字符串不同。这会让用户感到困惑。你能不能重新表述一下你的答案,让我接受你的答案?