【发布时间】:2019-12-22 08:06:20
【问题描述】:
今天在我的 cordova/ionic 应用程序上测试弹出消息时,我编译了我的应用程序,突然地图没有加载......只是我的自定义“正在加载地图......”旋转图标不断显示。
我潜得更深,看到了
var setMap = new google.maps.Map(document.getElementById("mapBody"), mapOptions) ;
实际上正在加载 - 我可以将setMap 打印到控制台。
我有一个函数,它每 500 毫秒调用一次,检查 tilesloaded 是否已完成,然后停止微调器,地图将自然加载。
但是,google.maps.event.addListenerOnce(setMap,'tilesloaded', function() {..} 永远不会触发。
以前从未见过这种情况...它开始同时在 iOS 和 Android 上发生 - 当它突然开始时我没有接触任何映射代码。
代码:
$scope.mapLoader = 0 ;
$scope.mapTrigger = 0 ;
function checkLoader() {
if ($scope.mapLoader == 0) {
//console.log(setMap) ;
if (setMap && $scope.mapTrigger == 0) {
console.log("setMap/mapTrigger") ;
console.log(setMap) ;
$scope.mapTrigger = 1 ;
google.maps.event.addListenerOnce(setMap,'tilesloaded', (function() {
////// it never makes it inside here, as the function never fires.
console.log("tilesloaded done") ;
$scope.mapLoader = 1 ;
$scope.$apply() ;
});
setTimeout(function() {
//console.log("Checking Loader") ;
checkLoader() ;
},500) ;
}
}
if ($scope.mapLoader == 0) {
checkLoader() ;
} else {
$scope.mapLoader = 1 ;
}
所以,set map 正在加载,看起来tilesloaded 已经完成(来自下面的控制台日志)......但是 addListenerOnce 没有触发。这在某种程度上是有道理的,因为地图不会加载......并且内部的 addListenerOnce 函数永远不会触发。我没有收到任何错误,也没有 google 错误...什么都没有。
console.log 输出:
setMap/mapTrigger
【问题讨论】:
标签: javascript angularjs google-maps-api-3 addeventlistener