2016-12-31 57 views
0

这个问题显然是重复的,但我找不到解决方案,不包含HTML代码的问题。我编码节点js用于一个机器人,所以一切都发生在JavaScript内部。 我需要使用StreetViewService,但不知道如何调用Google API或者如果我需要一个模块。调用谷歌API没有HTML给出的错误“谷歌没有定义”

var request = require('request'); 

function initialize() { 
    var latLong = {lat: -33.867386, lng: 151.195767}; 
    var streetviewService = new google.maps.StreetViewLocationRequest(); 
    streetviewService.getPanorama(
    {location: latLong, 
    preference: NEAREST, 
    radius: 200, 
    source: OUTDOOR}, 
    function(streetViewPanoramaData, status) { 
     if (status === google.maps.StreetViewStatus.OK) { 
     newLatLng = streetViewPanoramaData.location.latLng; 
     } 
    }); 
    } 

    nearestStreetViewUrl = 'https://maps.googleapis.com/maps/api/js?key='+ process.env.GoogleApiKey + '&callback=' +initialize(); 
    request(nearestStreetViewUrl, function (error, response, body) { 
if (!error && response.statusCode == 200) { 
    console.log(body); 
    // do something 
    } 
}); 

此代码给出错误“google is not defined”。我相信我没有正确调用API,或者错过了一些东西。

+0

要做的第一件事:缩进代码并正确匹配所有大括号。当你的示例代码抛出语法错误时,很难确切地告诉你什么是错误的。 – Tomalak

+0

@tomalak我编辑了代码抱歉,我没有复制粘贴正确。但问题仍然有效。 –

回答

0

在你实际上是在执行initialize()方法,并将结果粘贴到字符串的结尾以下行:

nearestStreetViewUrl = 'https://maps.googleapis.com/maps/api/js?key='+ process.env.GoogleApiKey + '&callback=' +initialize(); 

应设置方法的名称作为回调的查询参数的值,像这样:

nearestStreetViewUrl = 'https://maps.googleapis.com/maps/api/js?key='+ process.env.GoogleApiKey + '&callback=initialize'; 

这应该让你至少再进一步。

+0

这是我第一次尝试,但我认为该功能根本没有执行(因为控制台没有打印内部函数警报)。它还没有工作。你认为我的回调函数可以吗?我无法在执行后访问pano数据 –

+0

我不太熟悉google maps API应该在node.js中工作的方式。也许你可以使用这个npm包:https://www.npmjs.com/package/google-maps,或者看看这个http://stackoverflow.com/questions/15955963/is-it-possible-to-使用谷歌地图api库在节点js服务器端 – Theodorus

+0

感谢您的时间@Theodorus!谷歌地图模块仅适用于浏览器,所以它需要一些额外的代码才能使其工作 –

相关问题