2015-11-07 3 views
0

Я бы хотел, чтобы Google Maps конвертировал отправленный пользователем адрес в координаты карты. Я только хочу, чтобы эти координаты будут храниться в переменной, чтобы получить доступ позже:Google Geocode Javascript API - Как получить координаты?

function map_search() { 
    console.log("search form functional"); // sanity check 
    var searchLoc = $('#search_location').val(); 
    console.log(searchLoc); 
    var searchCoords = geocoder.geocode({'address': searchLoc}); 
    console.log(searchCoords); 

    ... 
} 

Я настраиваю его так:

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

Это работает до точки, где var seachCoords определена. В консоли он просто печатает как undefined.

Другие функции Google Maps успешно работают на этой странице. Неправильно ли мой JavaScript, или я неправильно использую этот геокодер?

+0

что является проблема точно? –

ответ

1

Из документации на https://developers.google.com/maps/documentation/javascript/geocoding

геокодирования службы требует метод обратного вызова выполняются после извлечения результатов геокодера. Этот обратный вызов должен передать два параметра для хранения результатов и кода состояния в этом порядке.

пример:

geocoder.geocode({ 'address': address}, function(results, status) { 
     if (status == google.maps.GeocoderStatus.OK) { 
     console.log(results); // all results 
     console.log(results[0].geometry.location); // "first" location 
     } else { 
     alert("Geocode was not successful for the following reason: " + status); 
     } 
    }); 

Примечание: это по его Природу асинхронный, так что не пытайтесь сделать это в функции, которая возвращает results[0].geometry.location в ответном заявлении

+0

ОК. Я не хочу создавать маркер, но я думаю, что я мог бы попытаться использовать эту тактику для отправки координат через запрос POST, и это то, что я пытаюсь сделать. Спасибо за находку. –

+0

Я отправил точный код из документации - я отредактирую, чтобы не путать проблему. –

+0

Спасибо. :) Если я сохраню свою переменную здесь, она должна сохранить ее позже, или мне нужно обернуть мой POST ajax внутри этой функции? –

-1

Попробуйте это PHP скрипт:

function getCoordinates($address){ 

$address = str_replace(" ", "+", $address); // replace all the white space with "+" sign to match with google search pattern 

$url = "http://maps.google.com/maps/api/geocode/json?sensor=false&address=$address"; 

$response = file_get_contents($url); 

$json = json_decode($response,TRUE); //generate array object from the response from the web 

return ($json['results'][0]['geometry']['location']['lat'].",".$json['results'][0]['geometry']['location']['lng']); 

} 

Как вызвать функцию в PHP:

echo getCoordinates('740 Story Rd San Jose CA 95122'); 
Result : 37.328865,-121.8581845 
+0

Ничего себе. Раньше я никогда не использовал PHP. Прежде чем приступать к реализации, я должен занять некоторое время. –

+0

PHP - это серверная сторона - как это даже ответ –

+0

Хва, да, я так и думал. Я не использую PHP. –

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