jquery - 如何知道 Google 地点何时已加载并准备好(异步)?

标签 jquery google-maps-api-3 google-places-api

我加载谷歌地图并在 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);

当 Google map 加载时调用回调:

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;
 }

当我进入城市选择屏幕时,我首先检查 Google map 是否已加载:

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

当我的手机连接 Wifi 或 3G 时,我可以开始输入占位符,Google 地点就会做出响应。当我在 Edge 中时,我开始打字,但 Google 位置没有任何交互。当我输入第一个字母时,可能需要长达 2 分钟的时间才能真正得到任何反应。

我希望只有在“地点”真正准备好时才能真正开始输入输入文本。但我还没有找到任何可以绑定(bind)的事件。

有什么想法吗?谢谢

最佳答案

找到了解决方案。我希望它能对某人有所帮助(我花了 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;
}

关于jquery - 如何知道 Google 地点何时已加载并准备好(异步)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17135608/

相关文章:

javascript - 单击 "update"后,检查与正在编辑的帖子对应的单选按钮,如果存在验证错误

jquery - 如何逐步转类

javascript - 分组多边形

php - 如何获得超过 20 个结果,即。 60 将 google place API 与 PHP 结合使用?

android - 谷歌将焦点放在搜索栏上?

javascript - 左边框颜色在 javascript 中不起作用

javascript - MVC View 在按钮 onclick 后刷新

javascript - 如何在谷歌方向上制作无限多段线并将可拖动标记适合该线?

javascript - 使用 Google Maps API V3 计算当前位置和不同位置之间的距离

java - 如何使用 GeoDataApi.getPlaceById?