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
});
これで問題なく動作しますが、間違っていると思わずにはいられません。