【问题标题】:Trigger Google Places Autocomplete触发 Google 地方信息自动填充
【发布时间】:2014-03-28 14:43:15
【问题描述】:

我正在尝试附加一个虚拟键盘以绑定到 Google 地方自动完成输入。

如果我在输入中实际输入了一个字母,则由 Google 提供支持的下拉菜单会根据地图的中心位置显示自动完成预测。如果我单击虚拟键盘键,输入会正确更新,但自动完成预测不会更新。

我曾尝试使用虚拟键盘change 回调来触发“keyup”(stackoverflow 结果)、“keypress”、“keydown”、“change”,我什至尝试过这个(demo):

change : function(e, keyboard, el) {
    google.maps.event.trigger(autocomplete, 'place_changed');
}

这会导致 javascript 错误,基本上表明 autocomplete.getPlace(); 没有返回结果。

所以现在我尝试了下面的代码(this demo),它使用更改回调来触发自动完成预测,但正如您在该演示中看到的那样,结果不同。

change : function(e, keyboard, el) {
  var $el = $(el),
      service = new google.maps.places.AutocompleteService();
  if ($el.val() !== "") {
    service.getQueryPredictions({ input: $(el).val() }, function(predictions, status) {
      if (status != google.maps.places.PlacesServiceStatus.OK) {
        alert(status);
        return;
      }
      var list = '', $results = $('#results');
      for (var i = 0, prediction; prediction = predictions[i]; i++) {
        list += '<li>' + prediction.description + '</li>';
      }
      $results.html(list);
    });
  }
}

理想情况下,我想在虚拟键盘上打字时触发已经建立的自动完成预测下拉菜单进行更新。

【问题讨论】:

标签: javascript google-places-api


【解决方案1】:

我找到了答案 (demo)!

change : function(e, keyboard, el) {
    google.maps.event.trigger( el, 'focus', {} );
}

【讨论】:

  • 老兄,你最终在 Google 的 API 中徘徊了好几个小时。非常感谢!
  • 当我点击自动完成结果时,你们知道如何触发更改吗?我可以让“焦点”触发并显示结果,但现在当我点击结果时,它们不会消失。
  • @nf071590 我遇到了同样的问题,因为我使用usePreview: true,,当我将其设置为 false 时,它​​工作正常
  • 这似乎不再起作用,除非您添加延迟,另请参阅:stackoverflow.com/questions/9892092/…
猜你喜欢
  • 2012-04-27
  • 2015-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-11-20
  • 2015-07-13
  • 2016-11-30
  • 2020-08-04
  • 2013-12-09
相关资源
最近更新 更多