Количество листовок в пикселях на уровень масштабирования

#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)
}