从 place_id 获取 Google 地图链接

问题描述 投票:0回答:8

HeIIo,使用谷歌地图 API 进行搜索,我可以找到某个地方,然后存储它的详细信息。但是,该数组不包含可在谷歌地图上打开此地点的谷歌地图链接。

通过 API,我收到 place_id,我认为这应该足以构建完整的谷歌地图链接;但是,我找不到办法做到这一点。谁能告诉我如何做到这一点。

感谢您的宝贵时间。

javascript google-maps google-maps-api-3 google-maps-urls
8个回答
175
投票

尝试以下语法。我希望它有帮助

https://www.google.com/maps/place/?q=place_id:ChIJp4JiUCNP0xQR1JaSjpW_Hms

47
投票

这里是一个官方网址,用于搜索

placeId
,如果
address
不存在,则回退到
placeId

https://www.google.com/maps/search/?api=1&query=<address>&query_place_id=<placeId>

无需令牌,适用于 Android、iOS(以及 iOS 11)和 Web


13
投票

有一种方法可以始终获得正确的 URL,但它确实需要额外的请求。

您可以使用 place_id 来获取地点详细信息

https://maps.googleapis.com/maps/api/place/details/json?key=YOURAPIKEY&placeid=THEPLACEID

来自的响应有一个 ['result']['url'] 字段,它总是打开正确的位置。 例如。

https://maps.google.com/?cid=10254754059248426663


12
投票

https://www.google.com/maps/place上没有关于预期参数的文档,因此这可能只是一种解决方法(至少目前对我有用)。

在大多数情况下,以下 URL 格式似乎给出了所需的结果:

https://www.google.com/maps/place/[place-name]/@[latitude],[longitude],[zoom]z/

您可以根据地名和地点几何创建此 URL

function initialize() {
  var ac = new google.maps.places.Autocomplete(document.getElementById('pac'));
  google.maps.event.addListener(ac, 'place_changed', function() {
    var place = this.getPlace(),
      link = document.getElementById('link');
    if (!place.geometry) {
      link.textContent = '';
    } else {
      var zoom = 17,
        url = 'https://www.google.com/maps/place/' +
        encodeURIComponent(place.name) + '/@' +
        place.geometry.location.toUrlValue() + ',' +
        zoom + 'z/';
      link.href = link.textContent = url;

    }

  });
}
google.maps.event.addDomListener(window, 'load', initialize);
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?v=3&libraries=places">
</script>
<input id="pac" />
<br/>
<a id="link"  href="" target="_blank"></a>


4
投票

我也遇到了同样的问题,iOS 应用程序将用户重定向到谷歌地图中所需的位置(从

nearbysearch
API 返回)。

他们在上面提到:

https://www.google.com/maps/place/?q=place_id:ChIJp4JiUCNP0xQR1JaSjpW_Hms

如果您在浏览器中打开此链接,它将在谷歌地图网站上显示一个地点。

但是,如果您尝试在手机上打开此链接,它将打开谷歌地图应用程序(如果用户手机上存在),并且不会重定向到 safari。 此外,谷歌地图应用程序不会显示该地点(该链接仅适用于浏览器)。

在测试了创建在谷歌地图应用程序和浏览器中都可以使用的链接的多种方法之后,最好的方法是显示一个地点只是在链接中传递

location
place_id

let url = "https://www.google.com/maps/search/?api=1&query=\(placeLatitude)%2C\(placeLongitude)&query_place_id=\(placeId)"

1
投票

您可以使用google embed API,并以src作为链接: 例如:

 https://www.google.com/maps/embed/v1/place?key=YOUR_API_KEY
  &q=place_id:YOUR_PLACE_ID

文档: https://developers.google.com/maps/documentation/embed/guide#place_mode


1
投票

0
投票

没有 place_id 对我有用的东西

https://www.google.com/maps/search/<search term>/@<coordinates>,<zoom level>z

示例

https://www.google.com/maps/search/Jouvay+Night+Club/@40.6961111,-73.8041667,15z
© www.soinside.com 2019 - 2024. All rights reserved.