#leaflet
#листовка
Вопрос:
Я создаю приложение, используя библиотеку листовок
У меня есть поле radius
, которое содержит расстояние в метрах (м).
const radius = 1000;
Мне нужно было бы преобразовать это поле в пиксели, но на разных уровнях масштабирования
Для уровней масштабирования я получаю значения от 8
till 18
У меня есть эта функция, которая успешно преобразует текущий уровень масштабирования
function disToPixeldistance(distance){
var l2 = L.GeometryUtil.destination(map.getCenter(),90,distance);
var p1 = map.latLngToContainerPoint(map.getCenter())
var p2 = map.latLngToContainerPoint(l2)
return p1.distanceTo(p2)
}
Но мне нужно было бы передать different zoom levels
в качестве дополнительного параметра, а затем преобразовать их из метров в пиксели
Нравится:
function disToPixeldistance(distance, zoomLevel)
Кто-нибудь знает, как я мог этого добиться? Заранее благодарю вас 🙂
Ответ №1:
Измените значение map.latlngToContainerPoint(latlng)
на map.project(latlng,zoom)
function disToPixeldistance(distance, zoom){
zoom = zoom || map.getZoom();
var l2 = L.GeometryUtil.destination(map.getCenter(),90,distance);
var p1 = map.project(map.getCenter(), zoom)
var p2 = map.project(l2,zoom)
return p1.distanceTo(p2)
}