Google地图适配器无法使用angularjs ng-dialog

时间:2014-12-25 12:46:20

标签: angularjs google-maps fitbounds ng-dialog

我正在使用ng-Dialog angularjs模块作为车辆行程视图。我对trip-map的angularjs指令运行正常,并且map在整个窗口中加载了fitbounds(不是在ng-dialog模型弹出窗口中),但它在ng-dialog弹出窗口中不起作用。

在ng-dialog中,加载了googlemap,但地图不在合适的位置。

之前我认为这个问题是由于googe map fitbound不能正常工作,所以我发布了以下问题。你可以在这里找到我的努力的更多细节。

Google map fitBounds not working


控制器中

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);

在窗口中,它看起来很好:

enter image description here

在ng-dialog模式弹出窗口中,它移动到左上角:

enter image description here

请告诉我解决方案。这将是值得赞赏的。

1 个答案:

答案 0 :(得分:2)

这是由于地图由ngDialog弹出指令调整大小。

使用as

在map resize回调中通过调用fitbounds解决
           $scope.$apply(function () {
                window.setTimeout(function () {
                google.maps.event.trigger(tripmap, 'resize');
                    tripmap.fitBounds(bounds);
                }, 100);
            });

谢谢大家的帮助。