如何检测如果谷歌地图加载成功
How to detect if google map loaded successfully
我的网站使用的是google-maps version 3。
我遇到了地图有时不加载的问题,而是它会显示为灰色框,浏览器日志将充满错误-不幸的是,我现在无法获得日志,因为地图又开始工作了。
根据一些研究,问题是由于我使用的实验版本
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=false"></script>
是否有一种方法可以发现地图是否已成功加载或崩溃,以便我可以告诉用户尽快回来?
注:我尝试了空闲事件,但即使在地图崩溃时也调用了
我认为最好或最确定的方法是结合tilesloaded
事件和延迟函数来测试是否设置了"成功标志"。
/* flag to indicate google maps is loaded */
googleMapsLoaded = false;
/* listen to the tilesloaded event
if that is triggered, google maps is loaded successfully for sure */
google.maps.event.addListener(map, 'tilesloaded', function() {
googleMapsLoaded = true;
//clear the listener, we only need it once
google.maps.event.clearListeners(map, 'tilesloaded');
});
/* a delayed check to see if google maps was ever loaded */
setTimeout(function() {
if (!googleMapsLoaded) {
//we have waited 5 secs, google maps is not loaded yet
alert('google maps is not loaded');
}
}, 5000);
改为监听" tiesloaded "事件。当一个map(成功)加载并且你正在实际显示一个map时,它是最后一个触发的事件。
如果没有映射(例如你没有明确设置宽度/高度),这个事件不会触发,即使idle触发。
您可以使用Map Events示例并在Network选项卡中限制连接以进行一些测试。下面是相同的示例,宽度/高度未设置为#map.
在空闲情况下,对map对象执行以下操作:
检查:
使用if (typeof google === 'object' && typeof google.maps === 'object') {...}
检查是否加载成功
然后检查if(map.getCenter) {
var latlng = map.getCenter();
//check here if latlng is object
}
如果" If "条件中的任何一个失败,则说明出现了问题。
相关文章:
- 谷歌地图固定位置覆盖
- 不显示带有本地json文件数据的谷歌地图脚本
- 谷歌地图不是以HTML显示,而是在JS Fiddle上工作
- 如果同一页面上有多个谷歌地图,单击任何标记都会突出显示最底部的地图标记
- 如果谷歌地图绘图(如onDraw)触发什么事件
- 谷歌地图API没有;t显示地图,如果中心由javascript函数填充
- 如果和其他谷歌地图点击事件
- 如何更新谷歌地图,如果它的地图画布改变了它的尺寸
- 如何检测如果谷歌地图加载成功
- 谷歌地图API -如何不加载/打开信息窗口点击,如果它已经打开停止闪烁
- 试着找出如果我(使用谷歌地图API服务)计算是正确的
- 谷歌地图-设置国家的颜色,如果我点击它链接到一个页面
- 谷歌地图如何添加标记,如果我知道纬度和经度
- 设置一个计时器,在N秒后提交表单,如果谷歌地图地理代码没有返回
- 如果我只知道它的大小和东北角,如何绘制谷歌地图矩形
- 自定义谷歌地图图标如果值>=1
- 谷歌地图API通知,如果标记是附近的另一个
- 如何检查两个LatLng值使用如果条件在谷歌地图api v3
- 如何加载标记,如果它们的位置是使用谷歌地图api或gmaps.js在屏幕上显示的
- 我需要隐藏API密钥时,使用谷歌地图js API?如果有,怎么做呢?