2016-10-29 6 views
0

Neu zu eckig, versucht, eine sehr einfache Anwendung mit der Google Maps/Places API einzurichten.

Ich kann erfolgreich den Geolocation-Dienst mit verwenden:

.controller('MainCtrl', [ 
    '$scope', 
    '$http', 
    function($scope, $http){ 
    $scope.userLocation = []; 
    $scope.currentLocation = function() { 
     $http({ 
     method: 'GET', 
     url: 'https://www.googleapis.com/geolocation/v1/geolocate?key=xxx' 
    }).then(function successCallback(response) { 
     $scope.userLocation.push(response); 
    }); 
    } 
}]) 

Problem: Wenn ich eine ähnliche GET-Anforderung an ihre Places API versuchen - ich CORS Fehler erhalten:

XMLHttpRequest cannot load https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=36.23…5.1458888&type=bar&key=xxx. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://0.0.0.0:3000' is therefore not allowed access.

Frage: Bin ich in der Lage, diese Art von Anfragen von Angular zu machen oder muss ich die Backen einrichten d, um diesen Anruf stattdessen zu machen?

Ich habe versucht, mit JSONP als Methode, die das CORS-Problem bestanden, aber dann habe ich das Problem nicht auf die Daten zugreifen. Nicht sicher, ob es ungültig JSON ... aber es sagt Unexpected identifier :, und wenn ich den Quelltext es wie völlig in Ordnung, Daten zu mir aussieht:

{ 
    "html_attributions" : [], 
    "results" : [ 
     { 
     "geometry" : { 
      "location" : { 
       "lat" : 36.2388477, 
       "lng" : -115.1540073 
      }, 
     }, 
     "icon" : "https://maps.gstatic.com/mapfiles/place_api/icons/restaurant-71.png", 
     "id" : "578bfba1f17b0c5fbdafd5b71600b50d3e95c1ca", 
     "name" : "Ruby Tuesday", 
     "opening_hours" : { 
      "open_now" : true, 
      "weekday_text" : [] 
     }, 

Antwort

3

Sie Places API auf Client-Seite können über die Bibliothek, die in Google Google Maps-JavaScript-API

Bitte auf dieser Seite, um herauszufinden, wie es funktioniert:

https://developers.google.com/maps/documentation/javascript/places

Ansonsten haben Sie Ihre Backend-Server erstellen Anfragen an Google senden und Antwort auf Ihren Client-Seite Code übergeben.

Hoffe es hilft!

0

Ich denke JSONP kann in dieser Situation funktionieren, Jsonp hilft für domänenübergreifende Probleme.