从Google Maps CID到地方ID

时间:2017-11-25 21:33:11

标签: google-places-api

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

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

3 个答案:

答案 0 :(得分:7)

您可以使用此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

答案 1 :(得分:5)

很幸运,发现了一个没有证件的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

答案 2 :(得分:4)

我所知道的唯一方法是抓取常规的html响应。这可以随时改变Googles的自由裁量权,我也会对更好的解决方案感兴趣。

截至目前,例如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知道他们为什么不提供更好的方式。