4

Leaflet ディレクティブで AngularJS を使用しています。

マーカーをディレクティブに渡すためにサービスを使用していますが、これはうまく機能します。

予想どおり、マーカーは$scope.markersに格納されます。

ただし、マーカーをドラッグすると $scope.markers の値が更新されないため、次のように確認するウォッチ リスナーを追加しました。

$scope.$watch("markers", function(newValue, oldValue) {
$log.info($scope.markers.m1);
});

メインコントローラーからマーカーを更新すると、マーカーが更新されていることがわかります。ドラッグではそうではなかったので、dragend でブロードキャストされたイベントに markerData を含めるようにディレクティブを変更しましたが、望ましい結果を得るには angular-leaflet-directive を変更する必要があることに驚いています。

MapController と、マーカーを作成したコントローラーに、以下を追加しました。

$scope.$on('leafletDirectiveMarker.dragend',function (e,marker) {
var markerName=marker.markerName
$scope.markers[markerName]=marker.markerData
        });

これで問題なく動作しますが、間違っていると思わずにはいられません。

4

1 に答える 1