我正在使用Leaflet的最新版本(v1.0.2),并尝试在自定义地图上动态应用文本标签到特定的纬度和经度点。我的问题是,当缩放地图时,我需要地图上的文本保持其大小(就像文本实际上是瓦片图像的一部分)。使用任何类型的标记会导致文本保持正确的大小。如果我使用像图像叠加这样的东西,并添加一个带有文本的SVG,则它随着地图缩放而缩放。我注意到图像覆盖在缩放时具有其转换属性中添加的CSS3比例,而标记则没有。我能否扩展标记以像图像覆盖一样进行缩放?我已经编写了代码来监听缩放事件并调整标记的字体大小,但这会占用CPU(特别是对于移动浏览器),我也不想在SVG内动态呈现文本!
我提供了一个演示以便更好地理解。您可以看到example_1(标记)无论您缩放多少,它都保持其大小不变。而Example_2(SVG图像)在缩放时相对于地图进行缩放。这就是我试图让带有HTML文本内容的L.DivIcon执行的操作!任何帮助或建议都将不胜感激!
我提供了一个演示以便更好地理解。您可以看到example_1(标记)无论您缩放多少,它都保持其大小不变。而Example_2(SVG图像)在缩放时相对于地图进行缩放。这就是我试图让带有HTML文本内容的L.DivIcon执行的操作!任何帮助或建议都将不胜感激!
https://jsfiddle.net/z96L7hdu/
示例代码
HTML
<div id="map" style="width:500px; height:600px;"></div>
JavaScript
var map = L.map('map', {
zoomSnap: 0
}).setView([0, 0], 3);
L.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {
attribution: '© <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
}).addTo(map);
var img = "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICAgICB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB2aWV3Qm94PSIwIDAgNTAwIDQwIj4gIDx0ZXh0IHg9IjAiIHk9IjAiIGZvbnQtZmFtaWx5PSJWZXJkYW5hIiBmb250LXNpemU9IjM1Ij4gICAgRXhhbXBsZV8yICA8L3RleHQ+PC9zdmc+";
imageBounds = [[-8.636810901898114, -12.135975261193327], [-18.28136415046407, 17.181122017133486]];
L.imageOverlay(img, imageBounds).addTo(map);
var myIcon = L.divIcon({className: 'my-div-icon', html:"Example_1"});
L.marker({lat: 0.7800052024755708, lng: 0.010986328125}, {icon: myIcon}).addTo(map);