- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在构建传单 map ,允许用户使用圆形工具绘制自定义选择。源代码告诉我可以将工具提示通知更改为指标,但我不知道如何实现。
Radius: 1239 ft
我想把它改成:
Radius: 377 m
被调用以显示半径的 Leaflet.draw 函数:
// Leaflet.draw.js
readableDistance: function(t, e, i, o) {
var n, s;
switch (s = "string" == typeof e ? e : i ? "feet" : o ? "nauticalMile" : e ? "metric" : "yards") {
case "metric":
n = t > 1e3 ? (t / 1e3).toFixed(2) + " km" : Math.ceil(t) + " m";
break;
case "feet":
t *= 3.28083, n = Math.ceil(t) + " ft";
break;
case "nauticalMile":
t *= .53996, n = (t / 1e3).toFixed(2) + " nm";
break;
case "yards":
default:
t *= 1.09361, n = t > 1760 ? (t / 1760).toFixed(2) + " miles" : Math.ceil(t) + " yd"
}
return n
}
我自己的 Map.js(这是我目前初始化 map 的方式):
// Map.js
function initMap() {
const drawControl = new L.Control.Draw({
draw: {
marker : false,
polygon : true,
polyline: {
metric: true
},
rectangle: true,
circle : {
metric: true
}
},
edit: false
});
const map = L.map('map').setView([CONFIG.MAP.LATITUDE, CONFIG.MAP.LONGITUDE], CONFIG.MAP.ZOOMLEVEL)
.on('popupopen', e => {
$(e.popup._source._icon).attr('src', CONFIG.IMG.ELEC_ACTIVE);
})
.on('popupclose', e => {
$(e.popup._source._icon).attr('src', CONFIG.IMG.ELEC_INACTIVE);
});
L.tileLayer('https://api.mapbox.com/styles/v1/mapbox/light-v9/tiles/256/{z}/{x}/{y}?access_token={accessToken}', {
accessToken: CONFIG.MAP.ACCESSTOKEN
}).addTo(map);
map.addControl(drawControl);
const icon = L.icon({
iconUrl : CONFIG.IMG.ELEC_INACTIVE,
popupAnchor: [125, 25],
iconSize : [14, 18]
});
const markers = L.markerClusterGroup({
maxClusterRadius(zoom) {
return (zoom <= 14) ? 80 : 1; // radius in pixels
}
});
for (let i = 0; i < 150; i++) {
// Remove everything except the CONFIG variables, Math.random() serves as testing display.
const marker = L.marker([(Math.random() * 0.05) - 0.03 + CONFIG.MAP.LATITUDE, (Math.random() * 0.05) - 0.03 + CONFIG.MAP.LONGITUDE], {
icon,
closeButton: false
}).addTo(map).bindPopup('<p class="c-popup__content"><a class="c-popup__link" href="#">Add pole to selection</a><span class="c-popup__address">Marnixstraat 246, 1016 TL, Amsterdam<span></p>', {
'className': 'c-popup'
})
.on('click', () => {
$('.c-popup').css('width', 'auto');
});
markers.addLayer(marker);
}
map.addLayer(markers);
}
旁注:我知道这个问题: Leaflet Draw Plugin: How to hide/show drawing tools by Layer Type dynamically
但是这个最佳答案并没有完全回答我遇到的问题,此外,我更愿意避免编写一个新函数来重新初始化我的控件
最佳答案
看起来像 API documentation与 source code 不完全相同确实如此(版本 v0.4.9
)。
1) 文档不明确,但是 circle
选项与 polyline
的形式相同选项,但它们不直接扩展它们。 IE。指定 metric
在 polyline
不为 circle
强制执行它以及。 => 您还需要指定 metric
circle
上的选项. (我猜 polygon
和 rectangle
也是一样)
2) 尽管 metric
选项接受一个 bool 值,它必须是 "metric"
字符串或与 feet: false
结合使用让它生效的选项。
var drawControl = new L.Control.Draw({
draw: {
circle : {
metric: 'metric'
}
}
});
或者:
var drawControl = new L.Control.Draw({
draw: {
circle : {
metric: true,
feet: false
}
}
});
演示:http://playground-leaflet.rhcloud.com/qur/1/edit?html,output
注意:已知问题,请参阅 Leaflet.draw issue #690 .提议的解决方法正是上面描述的内容。
关于javascript - 如何将我的 leaflet.draw 单位从英制更改为公制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43981845/
我是一名优秀的程序员,十分优秀!