【发布时间】:2016-10-22 16:22:39
【问题描述】:
我正在开发一个 Ionic + AngularJS + Cordova 移动应用程序。我在我的应用程序中使用标签。在其中一个选项卡中,我向用户显示了一张地图。我为此使用谷歌地图 V3 api。我正在将地图分配给 div 元素。
var map = null
var mapOptions = {
center: {lat: sourceLatitude, lng: sourceLongitude},
zoom: 17,
};
map = new google.maps.Map(document.getElementById('map'), mapOptions);
我存储用户的标记。到目前为止一切正常。我能够存储标记信息并在选项卡中显示地图。
现在,在另一个选项卡中,即选项卡二。我显示用户存储的标记。因此,当用户单击任何一个存储的标记时,它应该返回选项卡一并显示带有所选标记的地图。 (我正在使用 angularJS ui-router 来处理不同的状态转换)
这是我面临问题的地方。当我从标签二回到标签一时,我得到一张空白地图。我无法看到正在显示的地图。我知道转换发生正确,因为我已经为此登录并休息其他 ui 元素更改。只是地图没有显示出来。
我阅读了 SO 和其他资源,我看到人们推荐了以下内容:
google.maps.event.trigger(map, 'resize');
我已将上述语句放在我的 angularJS 控制器中,这样当它从 tab-2 移动到 tab-one 时,它会尝试调整大小或刷新地图。我在控制台中收到以下错误。
Error: a is undefined
_.C.hasListeners@http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places:93:707
_.C.trigger@http://maps.googleapis.com/maps/api/js?sensor=false&libraries=places:94:32
我在某处读到变量映射应该是全局的。因此,我尝试将地图也放在 $rootScope 上,而不是使用 var
$rootScope.map = new google.maps.Map(document.getElementById('map'), mapOptions);
但在这两种情况下都没有运气:(。
以前有人见过这个问题吗?任何帮助或指示将不胜感激。提前感谢您的帮助。
问候, V
【问题讨论】:
-
我宁愿用
javascript标记这个问题,但我不知道你应该删除哪个。 -
完成..标记为 javascript
-
也编辑了您的标签,因为我认为 maps-api-3 在这种情况下非常重要...
标签: javascript angularjs cordova google-maps-api-3 ionic-framework