1

我在 JQuery 中异步加载谷歌地图和地点:

 var script = document.createElement('script');
 script.type = 'text/javascript';
 script.src = "http://maps.google.com/maps/api/js?key=myKey&libraries=places&sensor=false&async=2&callback=MapApiLoaded";
 document.body.appendChild(script);

谷歌地图加载后调用回调:

function MapApiLoaded() {

   var input = document.getElementById('searchField');
   var options = {
      types: ['(cities)'],
   };

   autocomplete = new google.maps.places.Autocomplete(input, options);

   google.maps.event.addListener(autocomplete, 'place_changed', function(event) {
        var item = autocomplete.getPlace();
        // do some stuff
    }
    GMapsloaded = true;
 }

当我进入我的城市选择屏幕时,我首先检查谷歌地图是否已加载:

 if(!GMapsloaded) {
    alert('mapsnotloaded');
    return;
  }

当我的手机处于 Wifi 或 3G 网络时,我可以开始输入占位符,然后 google 地方就会响应。当我在 Edge 中时,我开始打字并且没有来自谷歌地方的交互。当我输入第一个字母时,可能需要 2 分钟才能真正得到任何反应。

我希望只有在 Places 真正准备好时才能真正开始输入输入文本。但我还没有找到任何要绑定的事件。

任何想法 ?谢谢

4

1 回答 1

6

找到了解决方案。我希望它会对某人有所帮助(我已经花了 4 个小时来解决这个问题):

// When Google places is ready, it adds an attr placeholder='Enter a location' or the equivalent in the current language
// It is the only way to know that it is monitoring the input field.
if (!GMapsloaded || $('#searchField').attr('placeholder') === undefined || $('#searchField').attr('placeholder') == false) {
    alert('Google places not attached to input');
    return;
}
于 2013-06-16T17:39:02.407 回答