2014-02-26 143 views
9

我想附加一个虚拟键盘绑定到谷歌的地方自动完成输入。触发谷歌地点自动完成

如果我物理输入在输入字母,谷歌供电下拉显示基于其中地图的中心自动完成预测。如果我点击虚拟键盘键,输入会得到正确更新,但自动完成预测不会更新。

我曾尝试使用虚拟键盘change回调触发“KEYUP”(计算器的结果),“按键”,“的keydown”,“变”,我甚至想这(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); 
    }); 
    } 
} 

理想情况下,我想要在虚拟键盘上键入时触发已建立的自动完成预测下拉列表更新。

回答

8

我发现我的答案(demo)!

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

老兄,你最终在谷歌的API中流浪了好几个小时。 非常感谢! –

+0

您是否在点击自动填充结果时找出如何触发更改?我可以得到'重点'来触发并显示结果,但现在当我点击结果时,它们不会消失。 – nf071590

相关问题