2016-12-31 74 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!谷歌地圖模塊僅適用於瀏覽器,所以它需要一些額外的代碼才能使其工作 –

相關問題