我正在使用传单来显示图表/原理图。
图表上的节点(或'图标')基于带有L.DivIcon的L.Marker,线条(或边缘)使用L.Polyline 我遇到一个问题,当我放大/缩小时线条会改变位置。
为此,我使用的是一个非常简单的CRS,其缩放比例相当于缩放级别:
L.CRS.VerySimple = L.extend({}, L.CRS.Simple, {
scale: function (zoom) {
return zoom;
},
zoom: function(scale) {
return scale;
}
});
当地图放大/缩小时,我会像这样缩放标记(这是在扩展L.marker
的类中实现的:
handleZoom(event, map) {
const scale = map.getZoomScale(map.getZoom(), map.options.zoom);
const newWidth = this.initialWidth * scale;
this.iconElem.style.width = `${newWidth}px`;
},
这是初始加载(无缩放):
这是在放大后:
可以看到折线向左移动了......
我可以看到两个原因:
当缩放时,折线处理折线(路径)并不像我预期的那样,我需要以某种方式显式处理坐标? (为了清楚这一点,我不希望线条显得更大'至于图标......只是出现在正确的位置)
我没有正确处理节点的缩放?