我想将 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
// ...
}
};
}
};
}]);