google placecomplete 插件不再允许 select 地址

google placecomplete plugin does not allow to select an address anymore

我一直在使用此脚本:https://github.com/stephjang/placecomplete 多年,没有任何问题。今晚我收到很多投诉,说用户无法从下拉菜单中 select 地址。输入地址可以正常工作并显示结果,但是当尝试 select 地址时,它不会执行任何操作。有谁知道 google 阻止 placecomplete 请求是否发生了变化?

我的代码:

$inputLocationSearch.placecomplete({ 
        placeholderText: "Enter your site location...", 
        requestParams: {
            componentRestrictions: {country: ['ca','us']}
        } 
    });

问题的屏幕截图(鼠标或键盘无法 select 找到地址):

在插件 jquery.placecomplete.js 代码中发现问题。将默认 id 参数替换为使用 place_id,因为 id 已弃用 google 自动完成。

我在现有代码上方添加:apr["id"] = apr["place_id"];apr["text"] = apr["description"];

这是添加的整个代码块:

var select2options = $.extend({}, {
        query: function(query) {
            GooglePlacesAPI.getPredictions(query.term, requestParams)
                .done(function(aprs) {
                    var results = $.map(aprs, function(apr) {
                        // Select2 needs a "text" and "id" property set
                        // for each autocomplete list item. "id" is
                        // already defined on the apr object
                        apr["id"] = apr["place_id"];
                        apr["text"] = apr["description"];
                        return apr;
                    });
                    query.callback({results: results});
                })
                .fail(function(errorMsg) {
                    $el.trigger(pluginName + ":error", errorMsg);
                    query.callback({results: []});
                });
        },
        initSelection: function(element, callback) {
            // initSelection() was triggered by value being defined directly
            // in the input element HTML
            var initText = $el.val();

            // The id doesn't matter here since we're just trying to prefill
            // the input with text for the user to see.
            callback({id: 0, text: initText});
        },
        minimumInputLength: 1,
        selectOnBlur: true,
        allowClear: true,
        multiple: false,
        dropdownCssClass: "jquery-placecomplete-google-attribution",
        placeholder: this.options.placeholderText
    }, this.options);