2016-05-03 6 views
0

私はGoogleマップapiの初心者です。私はAPIをジオコーディングするGoogleマップを実装しようとしています。
Geocoding API on Google Developersnodejs/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); 
     } 
    }); 
}; 

しかし私は、私の関数がエラー

Googleが

を定義していない投げ、レスポンスJSON形式にしたい誰もが助けることはできますか?

+0

google maps apiスクリプトは正しくインポートされていますか? – Koen

+1

ジオコーディングAPIとクライアントサイドのJavaScript APIが混乱していると思います。ここで後者を使用していますが、これはサーバーではなくブラウザで実行されるように設計されているため、エラーが発生します。代わりに、 'url'で指定したURLへのREST呼び出しを行う必要があります。基本的に 'var map = new google.maps.Map();'のコードのすべてがNodeでは動作しません。 –

+0

beginwitha require( 'google')にgoogle libraryをインポートする必要があります。または類似の声明。 – Oscar

答えて

3

ジオコーディングREST APIとクライアントサイドJavaScript APIが混乱していると思います。ここで後者を使用していますが、これはサーバーではなくブラウザで実行されるように設計されているため、エラーが発生します。

この場合、REST APIを使用するのは簡単です。サンプルコードで既に作成したURLにHTTPリクエストを行い、その結果をサーバーの応答に渡すだけです。これを簡略化するために、RequestまたはSuperAgentのようなライブラリを使用することをお勧めします。

は、ここで要求使用して、(未テスト)の例です:

効果的
// 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 
     } 
    }); 
}; 

を、あなたのサーバーは、ユーザーとGoogleのAPIの間の仲介として機能します - これは本当に便利なことができ、それはあなたが変更することができます手段としてリクエストがキャッシュされる前にリクエストをジオコーディングし、キャッシング結果などの処理を行うことができます(REST APIで1日に2,500件の無料リクエストが発生するため、トラフィック量はそれほど重要ではありません)。

+0

それは私と一緒に働いた! tks – Loint

+0

@ Ntlzz93:うれしい! –

関連する問題