Как извлечь широту и долготу из автозаполнения Google Maps - PullRequest
3 голосов
/ 27 февраля 2012

Я создаю веб-приложение, которое использует этот код для поиска адресов:

http://code.google.com/intl/en/apis/maps/documentation/javascript/examples/places-autocomplete.html

Введите там, Нью-Йорк, Нью-Йорк.

Итак,когда карта загружается в DOM после того, как пользователь использует опцию автозаполнения, пользователь может сохранить адрес местоположения в базе данных, и он будет доступен как «ex. New York, NY».Но для приложения мне нужно также сохранить широту и долготу.

Но у меня нет идей, как извлечь их из Google API.

Как тестовое приложение, я все ещеиспользуя код Google.Думаю, мне следует создать несколько скрытых полей и назначить им широту и долготу, когда пользователь выбирает адрес.

Любая реализация для моей проблемы приветствуется !!

Заранее спасибо

PS: Поскольку я новичок в StackOverflow, я не мог ответить сам.Итак, я редактирую пост, как предложено stackoverflow, и вот решение, основанное на ответе Даниэля и некоторых исследованиях в Google Api:

function getLatLng( address ) 
{
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'address' : address }, function( results, status ) {
        if ( status == google.maps.GeocoderStatus.OK ) {
            var mapLatLng = document.getElementById( 'mapLatLng' ); // mapLatLng is my hidden field, use your own
            mapLatLng.value = results[0].geometry.location.lat() + ', ' + results[0].geometry.location.lng();
        } else {
            alert( "Geocode was not successful for the following reason: " + status );
        }

    });            
}

Ответы [ 2 ]

10 голосов
/ 30 марта 2012

Даниэль прав по большей части, где он неверен, если он имеет здесь доступ к свойству:

$('#latitude').val(results[0].geometry.location.Pa)
$('#longitude').val(results[0].geometry.location.Qa)

Вместо этого следует использовать предоставленные функции lat () и lng ():

$('#latitude').val(results[0].geometry.location.lat())
$('#longitude').val(results[0].geometry.location.lng())
6 голосов
/ 27 февраля 2012

Вы можете использовать API Google, чтобы получить долготу и широту с вашего адреса.Как вы уже сказали, вы должны реализовать скрытое поле, в которое должен быть вставлен результат.Затем вы можете сохранить местоположение вместе с координатами.

Недавно я реализовал эту функцию в одном из своих проектов:

function getLatLngFromAddress(city, country){

  var address = city +", "+ country;
  var geocoder = new google.maps.Geocoder();

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

    if (status == google.maps.GeocoderStatus.OK) {
      $('#latitude').val(results[0].geometry.location.lat());
      $('#longitude').val(results[0].geometry.location.lng());

    } else {
      console.log("Geocode was not successful for the following reason: " + status);
    }
  });
}
...