リーフレット マップに SVG オーバーレイを追加したいと考えています。SVG を追加するオーバーレイ ペインに SVG コンテナを追加します。これは機能しますが、私の SVG コンテナはマップと共にスクロールし続けます。SVG を適切に表示するには、コンテナーが常にマップの現在のビュー (現在のマップ ビューの左上から右下まで) にまたがるようにします。
svg-container の原点を現在のマップ ビューの左上にリセットするにはどうすればよいですか?
これは私のコード スニペットです。SVG オーバーレイのディレクティブを示しています。私はリーフレット角度ディレクティブを使用しています:
angular.module('app')
.directive('cluster', ['lodash', function() {
return {
link: function(scope, element, attrs, leafletController) {
scope.$watch('cluster', function(newCluster, oldCluster) {
leafletController.getMap()
.then(function(map) {
return scope.render(newCluster, map);
});
});
scope.render = function(cluster, map) {
var overlayPane = d3.select(map.getPanes().overlayPane);
var svg = overlayPane.append("svg").attr("class", "leaflet-zoom-hide cluster");
var g = svg.append("g");
// append features (circles) to g
// ...
map.on("viewreset", update);
update();
function update() {
// update svg
svg.attr("width", map.getSize().x);
svg.attr("height", map.getSize().y);
// update features
// ...
}
};
}
};
}]);