2016-05-03 4 views
0

Ich bin ein Neuling in Google Map API. Ich versuche die Google Maps Geocodierung API zu implementieren.
Geocoding API on Google DevelopersWie implementiert man Geocoding-Antworten mit 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); 
     } 
    }); 
}; 

Ich möchte Antwort JSON-Format, aber meine Funktion einen Fehler aus, wird

google nicht definieren

Kann jemand helfen?

+0

Wird das Google Maps API Skript korrekt importiert? – Koen

+1

Ich denke, dass Sie zwischen der Geocoding-API und der clientseitigen JavaScript-API verwirrt sind. Sie verwenden das letztere hier, aber das ist so konzipiert, dass es in einem Browser ausgeführt wird, nicht auf einem Server, weshalb Sie einen Fehler erhalten. Sie müssen stattdessen REST-Aufrufe an die URL ausführen, die Sie in "url" angegeben haben. Grundsätzlich funktioniert alles von 'var map = new google.maps.Map();' in deinem Code nicht in Node. –

+0

Sie sollten Google Bibliothek bei der Beginwitha erfordern ('google'); oder eine ähnliche Aussage. – Oscar

Antwort

3

Ich glaube, Sie sind verwirrt zwischen der Geocoding-REST-API und der clientseitigen JavaScript-API. Sie verwenden das letztere hier, aber das ist so konzipiert, dass es in einem Browser ausgeführt wird, nicht auf einem Server, weshalb Sie einen Fehler erhalten.

Die Verwendung der REST-API ist in diesem Fall ziemlich einfach - Sie müssen lediglich eine HTTP-Anforderung an die bereits in Ihrem Beispielcode erstellte URL senden und dann das Ergebnis an die Antwort Ihres Servers weitergeben. Ich würde empfehlen, eine Bibliothek wie Request oder SuperAgent zu verwenden, um dies zu vereinfachen.

Hier ist ein (nicht getestet) Beispiel mit Antrag:

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

effektiv, Ihr Server fungiert als Vermittler zwischen den Benutzern und dem Google-API - das ist wirklich praktisch sein kann, da es bedeutet, dass Sie das ändern können Anfrage, bevor sie gesendet wird, um geocodiert zu werden, und ermöglicht Ihnen, Dinge wie Caching-Ergebnisse zu tun (Sie erhalten nur 2.500 kostenlose Anfragen pro Tag auf der REST-API, das ist also sehr wichtig, wenn Sie nicht-triviale Mengen an Datenverkehr erwarten!).

+0

Das hat mit mir funktioniert! tks – Loint

+0

@ Ntlzz93: Ich bin froh, dass ich helfen konnte! –

Verwandte Themen