从 Google 地图 CID 到地点 ID

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

我有一堆

https://maps.google.com/?cid=<identifier>
形式的谷歌地图链接。

如何从该 CID 转换为可与 Google Places API 一起使用的地点 ID?是否有任何 API 端点可用于将这些 URL 转换到新位置?

google-places-api
5个回答
14
投票

很幸运,发现了一个未记录的 api。如果你有CID,你可以像

https://maps.googleapis.com/maps/api/place/details/json?cid=${CID}&key=YOUR_API_KEY
那样调用api。

我刚刚将

place_id=${the_end_val_i_needed}
更改为
cid=${CID}
,json 响应中是
place_id


8
投票

您可以使用此API隐藏参数来获取地点ID。 用法:https://maps.googleapis.com/maps/api/place/details/json?cid=YOUR_CID&key=YOUR_KEY

它返回的结果包含格式化的地址、place_id、地址名称和 GPS 坐标。

请参阅我的博客以了解更多详细信息:https://leonbbs.blogspot.com/2018/03/google-map-cid-to-placeid-or-get.html


5
投票

我知道的唯一方法是抓取常规 html 响应。当然,谷歌可以自行决定随时更改,我也对更好的解决方案感兴趣。

截至目前

http://maps.google.com/?cid=15792901685599310349
的源嵌入了 json 响应。以
cacheResponse([[[
开头,以
]);
结束:

<!DOCTYPE html>
<html dir=ltr>
  <head>
    <script nonce="W6BFnVsL4HLAdFCwYXZY">
      mapslite = {
        START_PERF: (window.performance && window.performance.now) ?
                        window.performance.now() : +(new Date())
      };
      mapslite.getBasePageResponse = function(cacheResponse) {
        delete mapslite.getBasePageResponse;
        cacheResponse([[[2556.225486744883,-122.3492774,47.6205063], ... removed ... ]);
      };
      executeOgJs = function() {

在此 json 数组中,元素 8 包含一个子数组。元素 27 是

place_id

如果太空针塔带有 CID

15792901685599310349
,地点 ID 为
ChIJ-bfVTh8VkFQRDZLQnmioK9s

只有 Google 知道他们为什么不提供更好的方法。


0
投票

请求提供的链接,解析响应正文的 HTML 页面,并提取包含地点名称的元数据,这些元数据可用于通过 Place API 查找地点。

例如我们有一个链接:

maps.google.com/?cid=13226830714359798441

然后请求页面包含元信息:

<meta content="Big Ben · London SW1A 0AA, United Kingdom"
      itemprop="name">

<meta content="Big Ben · London SW1A 0AA, United Kingdom" 
      property="og:title">

<meta content="Big Ben · London SW1A 0AA, United Kingdom"
      property="og:site_name">

发送者和元数据提取器的要点: https://gist.github.com/asilichenko/b0000eb1562c9e4e75b0d43d799260bc


© www.soinside.com 2019 - 2024. All rights reserved.