Google商家信息自动填充功能从结果中删除州和国家/地区

时间:2012-11-08 11:54:02

标签: google-places-api

https://google-developers.appspot.com/maps/documentation/javascript/examples/places-autocomplete

我有一个类似上面的谷歌地方自动完成演示网址,如果我键入白金汉宫。它将返回

的结果
  1. 白金汉宫路,英国伦敦
  2. 白金汉宫商店,白金汉宫路,伦敦维多利亚, 英国
  3. 等。如何从结果中删除英国伦敦?

3 个答案:

答案 0 :(得分:2)

谷歌似乎没有兴趣尽快整理出来。我不得不求助于以下,对其他人来说可能就足够了。需要:

document.addEventListener('DOMNodeInserted', function(event) {
    var target = $(event.target);
    if (target.hasClass('pac-item')) {
        target.html(target.html().replace(/, Australia<\/span>$/, "</span>"));
    }
});

请注意,pac-item是每个建议使用的类。有关使用的其他类,请参阅Google Reference。具有pac-container类的容器似乎在未显示时删除项目,并在显示时添加新项目,因此如果将这些pac-items添加到DOM,则意味着建议正在进行中显示,pac-container即将显示。

刚刚开展这项改进工作。

这也不是一个完整的解决方案。选择删除国家/地区的建议时,自动填充功能仍会将国家/地区添加到地理编码中! place_changed改变这一点已经太迟了,所以请将上面的解决方案看作是答案的一部分。一旦我弄清楚其余部分,我会再次更新。

---更新

个人而言,我最终没有使用谷歌自动填充,因为我无法找到解决自动完成问题的方法,一旦选择了修改后的建议,仍然会显示该国家/地区。一种更有用的方法是使用twitter typeahead并使用谷歌API来获取建议。这让我对这些建议有了更多的控制权,但显然需要更多的手工工作来弥补功能的丢失

答案 1 :(得分:1)

以下是我如何使用jQuery自动完成它。希望它可以帮到某人。

   $("#Search").autocomplete({
       source: function (request, response) {
           var options = {
               input: request.term,
               types: ['(cities)'],
               region: 'US',
               componentRestrictions: { country: "us" }
           };
           function callback(predictions, status) {
               for (var i = 0, prediction; prediction = predictions[i]; i++) {
                   results.push(prediction.description.replace(/, United States$/, ""));
               }
               response(results);
           }
           var service = new google.maps.places.AutocompleteService();
           service.getPlacePredictions(options, callback);
           var results = [];
       }
   });

答案 2 :(得分:0)

如果不手动处理结果,则无法进行此操作。如果您认为这是一个有用的功能,请提交Places API - Feature Request