我正在创建一个天气应用程序,我需要知道一个城市的国家和地区,以提供天气数据。当用户搜索城市时,该应用程序会显示所有具有该名称的城市以及国家和地区的列表。
这可以使用Google Maps API,还是有更好的选择?
答案 0 :(得分:0)
我建议使用Google地理编码API的组件参数。在下面的例子中,我正在查询名为莫斯科的所有地方(城市,非法人地区和其他人口稠密的地方)。你可以在XML输出中看到它既有莫斯科俄罗斯又有莫斯科,爱达荷州。输出还包含国家和一级行政区划(例如,美国的州)(见https://developers.google.com/maps/documentation/geocoding/#ComponentFiltering)
https://maps.googleapis.com/maps/api/geocode/xml?address=component:locality=Moscow&sensor=false
<GeocodeResponse>
<status>OK</status>
<result>
<type>locality</type>
<type>political</type>
<formatted_address>Moscow, Russia</formatted_address>
<address_component>
<long_name>Moscow</long_name>
<short_name>Moscow</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>gorod Moskva</long_name>
<short_name>g. Moskva</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Moscow</long_name>
<short_name>Moscow</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Russia</long_name>
<short_name>RU</short_name>
<type>country</type>
<type>political</type>
</address_component>
<geometry>
<location>
<lat>55.7558260</lat>
<lng>37.6173000</lng>
</location>
<location_type>APPROXIMATE</location_type>
<viewport>
<southwest>
<lat>55.4899270</lat>
<lng>37.3193290</lng>
</southwest>
<northeast>
<lat>56.0096570</lat>
<lng>37.9456610</lng>
</northeast>
</viewport>
<bounds>
<southwest>
<lat>55.4899270</lat>
<lng>37.3193290</lng>
</southwest>
<northeast>
<lat>56.0096570</lat>
<lng>37.9456610</lng>
</northeast>
</bounds>
</geometry>
<partial_match>true</partial_match>
</result>
<result>
<type>locality</type>
<type>political</type>
<formatted_address>Moscow, ID, USA</formatted_address>
<address_component>
<long_name>Moscow</long_name>
<short_name>Moscow</short_name>
<type>locality</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Latah</long_name>
<short_name>Latah</short_name>
<type>administrative_area_level_2</type>
<type>political</type>
</address_component>
<address_component>
<long_name>Idaho</long_name>
<short_name>ID</short_name>
<type>administrative_area_level_1</type>
<type>political</type>
</address_component>
<address_component>
<long_name>United States</long_name>
<short_name>US</short_name>
<type>country</type>
<type>political</type>
</address_component>
<geometry>
<location>
<lat>46.7323875</lat>
<lng>-117.0001651</lng>
</location>
<location_type>APPROXIMATE</location_type>
<viewport>
<southwest>
<lat>46.7109120</lat>
<lng>-117.0396980</lng>
</southwest>
<northeast>
<lat>46.7588820</lat>
<lng>-116.9620680</lng>
</northeast>
</viewport>
<bounds>
<southwest>
<lat>46.7109120</lat>
<lng>-117.0396980</lng>
</southwest>
<northeast>
<lat>46.7588820</lat>
<lng>-116.9620680</lng>
</northeast>
</bounds>
</geometry>
<partial_match>true</partial_match>
</result>
</GeocodeResponse>