单击自动完成时的地理编码



这是我正在工作的代码:

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);
            }

        });        
    });    
});

这有效,但是,当有人单击自动完成时,我想完成地理标准。因此,当他们键入某些内容并单击AutoSuggest列表中的建议时,它实际上在单击结果时完成了地理编码调用。

如果有人能告诉我是否可以,我真的很感激,因为我还没有能够弄清楚自己做的。

自动完成的地理编码会自动合并。示例此处。

编辑:

这是该示例的要旨:

创建自动完成控件的关键线是:

var input = document.getElementById('searchTextField');
var options = {
    types: [],
    componentRestrictions: {country: 'us'}
};
var autocomplete = new google.maps.places.Autocomplete(input, options);

您还需要加载位置库:

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

和您的html:

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

顺便说一句,您不"向地理编码器添加自动完成"。位置自动完成类包括地理编码功能。

相关内容

  • 没有找到相关文章

最新更新