Google映射地理编码结果未定义

时间:2017-02-05 20:38:47

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

所以我试图从谷歌地图中对地址进行地理编码,但是当我尝试访问结果时,它说包含结果的数组是未定义的。我已经完成了相反的操作,从坐标中查找地址,授予了PHP,我不知道为什么这不起作用。我想通过JSON解析得到我想要的数据(Lat和long),但由于我无法做到这一点,我做了一个解决方法,只做了JSON.stringify并找到了Lat&通过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

修改:代码我正在使用google maps 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是我从文件中读取以转换为坐标

的地址值

1 个答案:

答案 0 :(得分:1)

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

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