【发布时间】:2015-10-21 09:52:26
【问题描述】:
首先,让我提一下,我已经看到了很多类似的问题并提出了解决方案,尽管我没有发现任何一个能够真正解决我的问题。也许我没有正确实现某些东西,或者有一个我没有找到/尝试过的解决方案。
我有一个 Angular 应用程序,并且正在使用 git angular-google-maps 指令。
我的地图处于选项卡视图中,并且仅在向导/选项卡显示第二个 div 元素时显示。我意识到这是一个 google api 问题,由于元素被隐藏,当 div 最终显示时地图没有初始化。只有当我调整页面大小或打开控制台时,它才开始显示/工作,按 F12(在 chrome 中)。
这是fiddle to illustrate my problem。
HTML 这是我的 html,这是在一个用 div 构建的 tab 元素中。
<div class="row">
<div class="hide-map">
<ui-gmap-google-map
id="map-canvas"
center="map.center"
zoom="map.zoom"
draggable="true"
events="map.events">
</ui-gmap-google-map>
</div>
<div class="col-sm-12">
<div id="pano" style=" height: 400px;">
</div>
控制器
angular.module('ngPortalApp')
.controller('myCtrl', function ($scope, $log, googleMapService, uiGmapGoogleMapApi) {
$log.log('myCtrl');
Init();
function Init() {
$scope.data = {};
googleMapService.getData().then(function (result) {
$scope.latc = result.lat;
$scope.longc = result.lng;
console.log("controller got data!");
console.log(result);
angular.extend($scope, {
map: {
center: {
latitude: $scope.latc,
longitude: $scope.longc
},
options: {
maxZoom: 17,
minZoom: 17
},
zoom: 17,
events: {
showMap: function (map){
map.refresh();
},
projection_changed: function (map, eventName, originalEventArgs) {
var Location = new google.maps.LatLng($scope.map.center.latitude, $scope.map.center.longitude);
var panoramaOptions = {
position: Location,
pov: {
heading: 30,
pitch: 5,
}
};
var panorama = new google.maps.StreetViewPanorama(document.getElementById('pano'), panoramaOptions);
map.setStreetView(panorama);
}
}
}
});
})
}
});
对此有任何解决方案/建议吗?我尝试使用 ng-if 设置和检查 activetab 范围值,我已与 ng-class 绑定,并且我尝试了地图范围内的各种事件,但我不确定如何实际调用地图事件,例如 map.refresh () 应该可以工作。 在此先感谢您在解决我的小提琴问题方面提供的任何帮助:)
【问题讨论】:
标签: angularjs google-maps