2014-09-19 6 views
2

Я занимаюсь некоторым JavaScript, о котором я очень мало знаю, чтобы геокодировать адрес, хранящийся на объекте в классе, который есть на Parse.com. Через Cloud Code у меня есть свойство на PFObect, которое мне нужно передать в геокодер, а затем проанализировать полученный результат JSON для lat и long, а затем сохранить его как свойство в том же PFObject.Геокодирование с помощью API Карт Google через Parse Cloud Code

Я потратил немало времени на поиск решения, и большинство рекомендаций, похоже, заключается в использовании Google Maps JavaScript API v3, а не HTTP-запроса.

Вот мой код:

Parse.Cloud.afterSave ('incidentDetails', function(request, status) { 

        var address = request.object.get("address1"); 
        var geocoder; 

        function initialize() { 

        geocoder = new google.maps.Geocoder(); 
        codeAddress(); 

        } 

        function codeAddress() { 

        console.log("test"); 

        geocoder.geocode({ 'address':address}, function (results, status) { 

            if (status == google.maps.GeocoderStatus.OK) { 

            var latLng = results[0].geometry.location; 
            request.object.set("latLng", latLng); 

            } else { 

            alert('Geocode was not successful for the following reasons: ' + status); 
            } 
            }); 
        } 

        initialize(); 

        }); 

Я надеюсь, что кто-то с некоторым опытом с этим может вести меня в правильном направлении. Вышеприведенный код разворачивается правильно в Parse Cloud Code, но я не уверен, что он действительно вызван, поскольку в консолях регистрации или ошибок ничего нет. Я чувствую, что мне не хватает чего-то фундаментального, и я ценю любую помощь или предложения.

ответ

5

google.maps.Geocoder является Javascript предназначен для работы в браузере, чтобы использовать геокод, использовать Parse.Cloud.httpRequest, как показано ниже, (Вы должны иметь геокодирования API с поддержкой в ​​консоли Goolge API)

Parse.Cloud.httpRequest({ method: "POST", url: ' https://maps.googleapis.com/maps/api/geocode/json ', params: { address : address, key:YourKey }, success: function(httpResponse) { var response=httpResponse.data; if(response.status == "OK"){ var langLat=response.results[0].geometry.location; console.log(langLat); } }, error: function(httpResponse) { console.error('Request failed with response code ' + httpResponse.status); } });

+0

Если вы говорите о YourKey в параметрах: { адрес: адрес, ключ: YourKey }, это ключ API Google Geo-кодирования, а не ключ приложения синтаксического анализа. –

0

Вы не вызываете функции, поэтому код не выполняется. Попробуйте:

initialize(); 

codeAddress(); 

Если код не работает, как вы ожидаете, вы можете отлаживать его по телефону:

console.log("Your info"); 
+0

Ok у меня есть код работает сейчас и нахожусь в состоянии напечатать в журнале , но, поскольку я подозревал, что мне нужно определить Google где-нибудь, поскольку он возвращает следующую ошибку: ReferenceError: google не определен ... Я предположил, что мне нужно предоставить источник для google api ... просто не уверен, где именно? Помощь там будет оценена. – blueHula

Смежные вопросы