当用户从微调器中选择特定城市时,将打开地图,因此用户可以从所选城市中选择特定位置。如果用户走出所选城市,就会有一个像“不是你的城市”的祝酒词。我需要在地图上显示的城市的唯一身份证号码,并与在微调器上选择的城市进行比较
答案 0 :(得分:1)
不幸的是,Google Maps API不会发布有关城市边界的信息(即定义城市边界的多边形)。我建议使用OpenStreetMap,它会释放这些数据,并且具有任何城市/地区/国家/地区的唯一ID号。使用OSM构建Here is a search engine,如果查看URL,您可以看到有一个与该城市相关联的唯一ID(在本例中为纽约)。 here是关于如何在Android上使用OSM的维基/文档。
编辑:see here
答案 1 :(得分:0)
您可以使用城市内坐标的反向地理编码请求并指定结果类型等于地点来确定城市的place ID是什么。
例如,坐标55.710424,37.682381位于莫斯科内部,因此使用结果类型进行反向地理编码
https://maps.googleapis.com/maps/api/geocode/json?latlng=55.710424%2C37.682381&result_type=locality&key=YOUR_API_KEY
将返回以下回复
{
"results":[
{
"address_components":[
{
"long_name":"Moscow",
"short_name":"Moscow",
"types":[
"locality","political"
]
},
{
"long_name":"Moskva",
"short_name":"Moskva",
"types":[
"administrative_area_level_2","political"
]
},
{
"long_name":"Moscow",
"short_name":"Moscow",
"types":[
"administrative_area_level_1","political"
]
},
{
"long_name":"Russia",
"short_name":"RU",
"types":[
"country","political"
]
}
],
"formatted_address":"Moscow, Russia",
"geometry":{
"bounds":{
"northeast":{
"lat":56.009657,"lng":37.9456611
},
"southwest":{
"lat":55.48992699999999,"lng":37.3193289
}
},
"location":{
"lat":55.755826,"lng":37.6172999
},
"location_type":"APPROXIMATE",
"viewport":{
"northeast":{
"lat":56.009657,"lng":37.9456611
},
"southwest":{
"lat":55.48992699999999,"lng":37.3193289
}
}
},
"place_id":"ChIJybDUc_xKtUYRTM9XV8zWRD0",
"types":[
"locality","political"
]
}
],
"status":"OK"
}
你可以看到莫斯科的地方ID是ChIJybDUc_xKtUYRTM9XV8zWRD0
。
您可以结合使用此地点ID来反转地理位置结果类型的地理编码,以检查坐标是否位于给定城市内。
例如,坐标55.586107,38.229675位于莫斯科边界之外且反向地理编码
https://maps.googleapis.com/maps/api/geocode/json?latlng=55.586107%2C38.229675&language=en&result_type=locality&key=YOUR_API_KEY
将为您提供一个地点ID ChIJu_L0awrASkER7yCl6FLZFLE
的不同地点,这是一个城市'Ramenskoye,Moscow Oblast,Russia'。
我希望您发现此信息有用。