Геокодирование при автозаполнении клика

Это код, с которым я работаю:

http://jsfiddle.net/njDvn/75/

var GeoCoded = {done: false};

$(document).ready(function(){
    console.log('ready!');
    autosuggest();
    console.log($('#myform input[type="submit"]'));
    $('#myform').on('submit',function(e){


        if(GeoCoded.done)
            return true;

        e.preventDefault();
        console.log('submit stopped');
        var geocoder = new google.maps.Geocoder();
        var address = document.getElementById('location').value;

        $('#myform input[type="submit"]').attr('disabled',true);

        geocoder.geocode({
            'address': address
        }, 
        function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                var latLng = results[0].geometry.location;
                $('#lat').val(results[0].geometry.location.lat());
                $('#lng').val(results[0].geometry.location.lng());
                //if you only want to submit in the event of successful geocoding, you can only trigger submission here.
                GeoCoded.done = true;
                $('#myform').submit();
            } else {
                console.log("Geocode was not successful for the following reason: " + status);
                //enable the submit button
                $('#myform input[type="submit"]').attr('disabled',false);
            }


        });        

    });    

});

Это работает так, как я хочу, НО я хотел завершить геокодирование, когда кто-то нажимает на автозаполнение. Таким образом, когда они что-то вводят и нажимают на предложение из списка автозаполнения, он фактически завершает вызов геокодирования, когда нажимает на результат.

Если бы кто-нибудь мог сказать мне, возможно ли это, я был бы очень признателен, потому что я не смог понять, как это сделать сам. ​


person J.Zil    schedule 12.11.2012    source источник


Ответы (1)


Автозаполнение автоматически включает геокодирование. Пример здесь.

Изменить:

Вот суть этого примера:

Ключевые строки для создания элемента управления автозаполнением:

var input = document.getElementById('searchTextField');
var options = {
    types: [],
    componentRestrictions: {country: 'us'}
};

var autocomplete = new google.maps.places.Autocomplete(input, options);

Вам также необходимо загрузить библиотеку Places:

<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>

и в вашем HTML:

<input id="searchTextField" type="text" size="50" value="">

Кстати, вы не «добавляете автозаполнение в геокодер». Класс Places Autocomplete включает возможности геокодирования.

person Marcelo    schedule 12.11.2012
comment
Спасибо за ответ. Однако на моем это не работает, если вы нажмете на мой jfiddle, он не будет геокодировать при нажатии - person J.Zil; 12.11.2012
comment
Затем реализуйте автозаполнение, как в моем примере (который работает), а не как ваш jsFiddle (который не работает). ;-) - person Marcelo; 12.11.2012
comment
Я попробую и отчитаюсь, я еще не полностью понимаю ваш код - person J.Zil; 12.11.2012