我们使用类似于示例应用中的Google Places API预测.在选择结果时,我们使用以下方法获取预测位置的详细信息:
Places.GeoDataApi.getPlaceById(mGoogleApiClient, placeId);
这很好用,我的问题是结果只包含一个String作为地址.
使用JS版本的API时,结果包含:
"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" ] } ],
但address_components
在Android上使用API时,缺少上述信息.如何使用Google地方信息API在Android上获取此信息?
不幸的是答案是"你不能."
Google不会向该API的Android实施提供结构化响应数据.
您可以尝试解析地址文本,但根据我对相关帖子的回答,这绝非易事:
你想出了一种解析该字符串的聪明方法.不幸的是,实际的街道/郊区/城镇/省级结构在不同地区并不一致(例如,南非的开普敦与南非的约翰内斯堡有不同的句子结构).所以你的解析规则需要非常聪明.
您使用其他Google API.JavaScript API为相关调用提供结构化数据.不幸的是,Google建议不要使用此技术.
我的一位同事已将此问题记录在Google:
问题10019:在Place对象中公开地址组件