我正在使用ng-Dialog angularjs模块作为车辆行程视图。我对trip-map的angularjs指令运行正常,并且map在整个窗口中加载了fitbounds(不是在ng-dialog模型弹出窗口中),但它在ng-dialog弹出窗口中不起作用。
在ng-dialog中,加载了googlemap,但地图不在合适的位置。
之前我认为这个问题是由于googe map fitbound不能正常工作,所以我发布了以下问题。你可以在这里找到我的努力的更多细节。
ng-dialog调用代码:
ngDialog.open({
template: 'Views/Main/tripdetail.html',
className: 'ngdialog-theme-plain',
controller: 'tripdetailController',
scope: $scope
});
映射适配代码:
var marker;
var tripmap = mapService.getTripMap();
var bounds = new google.maps.LatLngBounds();
for (var j = 0; j < trips.length; j++) {
var ltlng = new google.maps.LatLng(trips[j].lat, trips[j].lng);
bounds.extend(ltlng);
// if (j == 0 || j == trips.length - 1) {
marker = new google.maps.Marker({
position: ltlng,
map: tripmap
});
// }
}
$scope.Bounds = bounds;
tripmap.fitBounds(bounds);
在窗口中,它看起来很好:
在ng-dialog模式弹出窗口中,它移动到左上角:
请告诉我解决方案。这将是值得赞赏的。
答案 0 :(得分:2)
这是由于地图由ngDialog弹出指令调整大小。
使用as
在map resize回调中通过调用fitbounds解决 $scope.$apply(function () {
window.setTimeout(function () {
google.maps.event.trigger(tripmap, 'resize');
tripmap.fitBounds(bounds);
}, 100);
});
谢谢大家的帮助。