0

AngularJS の Google マップを使用して、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 に答える