2016-05-03 47 views
0

我是google map api的新手。我正在嘗試實施谷歌地圖地理編碼api。
Geocoding API on Google Developers如何使用nodejs/javascript實現地理編碼響應?

exports.FindByKeyWord = function (req, res, next) { 

    var API_KEY = "SOMEDATA"; 
    var BASE_URL = "https://maps.googleapis.com/maps/api/geocode/json?address="; 

    var address = "1600 Amphitheatre Parkway, Mountain View, CA"; 

    var url = BASE_URL + address + "&key=" + API_KEY; 

    var map = new google.maps.Map(); 
    var geocoder = new google.maps.Geocoder(); 

    geocoder.geocode(url, function(results, status) { 
     if (status === google.maps.GeocoderStatus.OK) { 
      map.setCenter(results[0].geometry.location); 
      var marker = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 
      res.json(marker); 
     } else { 
      alert('Geocode was not successful for the following reason: ' + status); 
     } 
    }); 
}; 

我要回應JSON格式,但是我的函數拋出一個錯誤

谷歌沒有定義

誰能幫助?

+0

正確導入google maps api腳本嗎? – Koen

+1

我認爲你在Geocoding API和客戶端JavaScript API之間感到困惑。你在這裏使用後者,但是它被設計爲在瀏覽器中運行,而不是在服務器上運行,因此你爲什麼會遇到錯誤。您需要對您在「url」中指定的網址進行REST調用。基本上,從代碼中的'var map = new google.maps.Map();'開始的所有內容都不能在Node中工作。 –

+0

您應該在beginwitha require('google')中導入谷歌庫;或類似的聲明。 – Oscar

回答

3

我想你會在Geocoding REST API和客戶端JavaScript API之間感到困惑。你在這裏使用後者,但是它被設計爲在瀏覽器中運行,而不是在服務器上運行,因此你爲什麼會遇到錯誤。

在這種情況下使用REST API非常簡單 - 您只需向示例代碼中已創建的URL發出HTTP請求,然後將結果傳遞給服務器的響應。我建議使用像RequestSuperAgent這樣的庫來簡化此操作。

下面是一個(未經測試)例如,使用要求:

// npm install request --save 
var request = require("request"); 

exports.FindByKeyWord = function (req, res, next) { 

    var API_KEY = "SOMEDATA"; 
    var BASE_URL = "https://maps.googleapis.com/maps/api/geocode/json?address="; 

    var address = "1600 Amphitheatre Parkway, Mountain View, CA"; 

    var url = BASE_URL + address + "&key=" + API_KEY; 

    request(url, function (error, response, body) { 
     if (!error && response.statusCode == 200) { 
      res.json(body); 
     } 
     else { 
      // The request failed, handle it 
     } 
    }); 
}; 

實際上,您的服務器充當您的用戶和谷歌API的中間人 - 這可真方便,因爲它意味着你可以修改請求在發送之前進行地理編碼,並允許您執行緩存結果之類的內容(您每天只能在REST API上獲得2,500次免費請求,因此,如果您希望獲得不平凡的流量,這一點非常重要!)。

+0

與我合作! tks – Loint

+0

@ Ntlzz93:很高興能幫到你! –

相關問題