0

我正在使用Google Maps for AngularJS将地图添加到我在 AngularJS 中的项目中。一切都很好,除了在某些时候我希望地图中心与单击的标记完全相同的位置。因此,在单击事件中,我在 AngularJS 控制器中设置了地图的中心。一切正常,但是当我拖动或缩放地图时,标记位置成为地图的“新”中心。有谁知道为什么会这样?这就像标记坐标以双向方式绑定......任何帮助表示赞赏!提前致谢

这是代码:

// angular js controller
// map init [displays markers for all railway terminals in DB]
$scope.map = {
        center: {
            latitude: 48.22476,
            longitude: 16.41356
        },
        zoom: 4
    };
    $scope.markers = []; // later filled with data from DB

// some code in between ...

// selection in table with termnals
$scope.selectTerminal = function (terminal) {
    $scope.selected.terminal = terminal;
    if (terminal.placeId != $scope.currentSelectedId) {
        $scope.currentSelectedId = $scope.selected.terminal.placeId;
        $scope.getTerminalDetails($scope.selected.terminal.placeId);
        $scope.map.center = terminal.address.coords; // THIS LINE GIVES ME TROUBLE
        $scope.map.zoom = 12;
    }
};

因此,地图中心是根据选择动作上所选终端的坐标设置的(它是地图的新中心),并且缩放级别增加。问题是当我尝试重置地图,或者尝试缩放或拖动地图时,标记坐标会获得新的地图中心坐标,但它不应该。这就是为什么我说“双向绑定”,我就是想不通这件事。

4

1 回答 1

1

使用您的示例,您可以做到这一点。

$scope.map = {
        center: {
            latitude: 48.22476,
            longitude: 16.41356
        },
        zoom: 4,
        markersEvents: {
          click: function(marker, eventName, terminal) {
            $scope.map.center.latitude = terminal.coords.latitude;
            $scope.map.center.longitude = terminal.coords.longitude;
          }
       }
    };

记得在 html 标记中引入 events="map.markersEvents"

于 2015-04-08T14:42:01.970 回答