Google 地点详细信息经纬度坐标与跨平台地图 URL 不匹配
Posted
技术标签:
【中文标题】Google 地点详细信息经纬度坐标与跨平台地图 URL 不匹配【英文标题】:Google Place Details Lat/Long coordinates not matching cross platform Maps URLs 【发布时间】:2018-09-10 20:38:28 【问题描述】:我已使用 Google Place details API 获取地点详细信息,其中包括地点的纬度/经度坐标。
当我使用通用跨平台 Maps URL 启动 Google 地图时,它无法识别该地点。
例如,
https://maps.googleapis.com/maps/api/place/details/json?placeid=ChIJbf8C1yFxdDkR3n12P4DkKt0&key=XXXXXXXX
返回包含以下位置数据的地点详细信息:
.....
"geometry":
"location":
"lat": 27.1750151,
"lng": 78.0421552
,
"viewport":
"northeast":
"lat": 27.1770292,
"lng": 78.04537599999999
,
"southwest":
"lat": 27.16897280000001,
"lng": 78.0388188
,
.....
"name": "Taj Mahal",
"place_id": "ChIJbf8C1yFxdDkR3n12P4DkKt0",
.....
但是,当用于创建带有direction map action 的Maps URL 时,此数据不会在目标字段中给出正确的位置。
谷歌地图网址:https://www.google.com/maps/dir/?api=1&destination=27.1750151,78.0421552&destination_place_id=ChIJbf8C1yFxdDkR3n12P4DkKt0
目的地未显示为地点。仅使用 lat/lng 或地址,如下所示。
正确/预期的结果如下。看看目的地。
更新
问题似乎在于 PlaceID 与地图 URL 中的纬度/经度坐标不匹配。 Place Details API 提供的 lat/lng 似乎不一致。
以下网址有效
https://www.google.com/maps/dir/?api=1&destination=27.1750151,78.0421552,15z&destination_place_id=ChIJbf8C1yFxdDkR3n12P4DkKt0
但27.1750151,78.0421552,15z
不是来自Place details API 的坐标。 PlaceDetails API 返回的 lat/lng 是 27.1750151,78.0421552
。
,15z
有一个区别,我相信它是zoom levels。
【问题讨论】:
这个地点 ID 是什么?你是怎么第一次得到它的?您对您提供的请求有何期望?提供示例很好,但也请让我们知道“出了什么问题”。 PlaceID 已使用 developers.google.com/maps/documentation/javascript/examples/… 获取。我添加了截图。希望现在很清楚。 你的问题是? 【参考方案1】:destination
的文档提到 该值可以是地名、地址或以逗号分隔的纬度/经度坐标。
如果您输入坐标,我想它只是进行反向地理编码并显示相应的地址。所以你可以输入地名,它就会起作用。
https://www.google.com/maps/dir/?api=1&destination=Taj+Mahal&destination_place_id=ChIJbf8C1yFxdDkR3n12P4DkKt0
【讨论】:
我知道它适用于地名。即使您不提供 PlaceID,它也可以使用 google.com/maps/dir/?api=1&destination=Taj+Mahal。但我们需要给出确切的名称,可能会产生歧义。 那又怎样?那你为什么不把你得到的适当的地名和地名作为destination
参数传递呢?
我需要它与纬度/经度。我只存储 lat/lng 和 placeID 以供以后与 Google Maps URL 一起使用……它不采用 lat/lng。请检查其他答案。
是的,那你为什么不把地名也存储起来呢?而不是使用一些无证的hack。【参考方案2】:
在提供 lat/lngs 时,destination
参数似乎完全胜过destination_place_id
参数,从而导致坐标上的反向地理编码。在以下示例 URL 中,我使用的地点 ID 为 ChIJj61dQgK6j4AR4GeTYWZsKWw
,它对应于加利福尼亚州山景城的 Googleplex,为 destination_place_id
,泰姬陵的纬度/经度为 destination
;请注意 Googleplex 查询被忽略,并执行反向地理编码以获取印度的地址:
https://www.google.com/maps/dir/?api=1&destination=27.1750151,78.0421552&destination_place_id=ChIJj61dQgK6j4AR4GeTYWZsKWw
因此,解决方法是不使用 lat/lng 作为destination
参数。我已经使用各种字符串(地名、地址、乱码)作为该参数进行了测试,destination_place_id
似乎取代了它,这是所需的行为。当仅使用 .
(句点) 作为通用值时,会提供地点名称和地址:
https://www.google.com/maps/dir/?api=1&destination=.&destination_place_id=ChIJj61dQgK6j4AR4GeTYWZsKWw
https://www.google.com/maps/dir/?api=1&destination=.&destination_place_id=ChIJbf8C1yFxdDkR3n12P4DkKt0
【讨论】:
以上是关于Google 地点详细信息经纬度坐标与跨平台地图 URL 不匹配的主要内容,如果未能解决你的问题,请参考以下文章