【问题标题】:Geocode on autocomplete click自动完成点击地理编码
【发布时间】:2012-11-12 11:32:15
【问题描述】:

这是我正在使用的代码:

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


        });        

    });    

});

这可以按我的意愿工作,但是,当有人单击自动完成时,我想完成地理编码。因此,当他们键入内容并单击自动建议列表中的建议时,它实际上会在单击结果时完成地理编码调用。

如果有人能告诉我这是否可行,我将不胜感激,因为我自己还没有弄清楚如何去做。 ​

【问题讨论】:

    标签: javascript google-maps google-maps-api-3 google-api geocode


    【解决方案1】:

    自动完成功能会自动合并地理编码。 Example here.

    编辑:

    这是该示例的要点:

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

    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 类包括地理编码功能。

    【讨论】:

    • 感谢您的回答。它似乎不适用于我的,如果你点击我的 jfiddle 它不会在点击时进行地理编码
    • 然后像我的例子一样实现你的自动完成,(它有效),而不是像你的 jsFiddle(它没有)。 ;-)
    • 我试一试并报告,我还没有完全理解你的代码
    猜你喜欢
    • 2011-12-04
    • 2019-02-13
    • 2013-05-07
    • 2019-06-02
    • 1970-01-01
    • 1970-01-01
    • 2013-03-23
    • 2021-05-24
    • 1970-01-01
    相关资源
    最近更新 更多