【问题标题】:Google maps Geocode results undefined谷歌地图地理编码结果未定义
【发布时间】:2017-06-22 18:14:16
【问题描述】:

所以我试图从谷歌地图中对地址进行地理编码,但是当我尝试访问结果时,它说包含结果的数组未定义。我已经通过从坐标中查找地址来完成与此完全相反的操作,当然这是在 PHP 中,我不确定为什么这不起作用。我只想解析 JSON 以获取我想要的数据(纬度和经度),但由于我无法做到这一点,我已经解决了问题,只是做了 JSON.stringify 并找到经度和经度通过str.locate("lat")

但是,当我从谷歌地图解析 json 响应时,我得到了这个

    { results: 
        [ { address_components: [Object],
        formatted_address: '2985 NW Moda Way, Hillsboro, OR 97124, USA',
        geometry: [Object],
        place_id: 'ChIJt-G-MmcPlVQROzDAlEVj1nA',
        types: [Object] } ],
        status: 'OK' 
     }

几何内部的对象是我想要的,为此我使用 node.js 的请求库。我正在控制台记录JSON.parse(response.body); 以获取结果数组,但试图通过

获取结果对象

JSON.stringify(response.body.results[2]); 导致 TypeError: Cannot read property '2' of undefined

编辑:我正在使用请求谷歌地图 API 的代码

 request('https://maps.googleapis.com/maps/api/geocode/json?address=' + address + '+' + parsedStreet + '&key=' + key, function(err, response) {
     if (err)
        console.log("holy shit error");
    console.log(JSON.parse(response.body.results));

返回

undefined ^ SyntaxError: Unexpected token u in JSON at position 0

address 和 parsedStreet 是我从文件中读取以转换为坐标的地址值

【问题讨论】:

  • 你能告诉我们你的request代码吗?
  • 为了将来参考,当您更新时,在 cmets 中给人们一个 @ 参考会很有帮助,这样他们就知道您回复了他们的评论。

标签: javascript json node.js google-maps-api-3 request


【解决方案1】:

看起来您在实际将 JSON 解析为对象之前尝试访问 result 索引,因此您尝试从字符串中获取 result 索引。您需要 JSON.parse 只是响应正文,然后进入结果,如下所示:

console.log(JSON.parse(response.body).results);

【讨论】:

  • 谢谢您,先生,就像括号一样简单。
猜你喜欢
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2014-04-15
  • 2015-10-21
  • 1970-01-01
  • 2011-08-12
  • 2012-04-10
  • 1970-01-01
相关资源
最近更新 更多