Как сделать мои индивидуальные маркеры SVG в листовке, не двигаются во время масштабированияJavascript

Форум по Javascript
Ответить Пред. темаСлед. тема
Anonymous
 Как сделать мои индивидуальные маркеры SVG в листовке, не двигаются во время масштабирования

Сообщение Anonymous »

Я пытаюсь создать пользовательские маркеры SVG, используя L.Svgoverlay в листочке. Маркеры реализованы как элементы svg . Они работают правильно, когда я увеличиваю и выходу: они остаются на правильных географических позициях. Однако, если я панирует (переместить) карту, а затем увеличить, маркеры соходят без ума. Я не могу выяснить, что я делаю не так.







html, body {
height: 100%;
margin: 0;
font-family: Arial;
}

#map {
height: 100vh;
width: 100vw;
}

.villageMarker {
pointer-events: auto !important;
cursor: pointer;
}






function updateSvgPositionsZoom() {
const mapBounds = map.getBounds();
svgOverlay.setBounds(mapBounds);

const svgOverlayElement = svgOverlay.getElement();

Array.from(svgOverlayElement.children).forEach(icon => {
const i = icon.id.split("_")[1];
const coords = coordinates;

const point = map.latLngToLayerPoint(coords);

icon.setAttribute('transform', `translate(${point.x},${point.y})`);
});
};

async function show() {
for (const i in iconWrappers) {
const coords = coordinates;
const iconWrapper = iconWrappers;

const circle = document.createElementNS(ns, "circle");
circle.setAttribute('r', 10);
circle.setAttribute('fill', '#fc43ab');
circle.setAttribute('stroke', '#000000');
circle.setAttribute('stroke-width', '1');

iconWrapper.appendChild(circle)

const point = map.latLngToLayerPoint(coords);
iconWrapper.setAttribute('transform', `translate(${point.x},${point.y})`);
};
};

async function main() {
map = L.map('map', {center: [52.38, 9.77], zoom: 6});

L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
attribution: '© OpenStreetMap contributors'
}).addTo(map);

svg = document.createElementNS(ns, "svg");
svg.style.pointerEvents = 'none';

for (const i in coordinates) {
const iconWrapper = document.createElementNS(ns, "g");
iconWrapper.setAttribute('id', `marker_${i}`);
iconWrapper.classList.add('villageMarker');

svg.appendChild(iconWrapper);
iconWrappers.push(iconWrapper);
};

svgOverlay = L.svgOverlay(svg, map.getBounds(), {
interactive: true,
opacity: 1
}).addTo(map);

svgOverlay.getElement().setAttribute('xmlns', ns);

map.on('zoomend', updateSvgPositionsZoom);

show();
};

let pathname;

let map;
let ns = "http://www.w3.org/2000/svg";
let svgOverlay;
let svg;

let coordinates = [
[52.38, 9.77],
[51.52, 7.47],
[53.56, 9.97]
]

let iconWrappers = [];

main();


< /code>
< /div>
< /div>
< /p>
Чего мне не хватает, чтобы маркеры стали стабильными как во время панорамирования, так и во увеличении? Должен ли я справиться с различными событиями или в моей конверсии координат есть фундаментальная ошибка?

Подробнее здесь: https://stackoverflow.com/questions/797 ... le-zooming
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Попытка добавить маркеры для карты Trimble в React с JavaScript SDK, но маркеры сдвигаются с карты, а не при введенном L
    Anonymous » » в форуме Javascript
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Враги Space Invaders не двигаются
    Anonymous » » в форуме CSS
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • В make 3d play на ursina мои враги не двигаются в игре
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как заставить изображение действовать как карта (маркеры масштабирования/панорамирования/карты)?
    Anonymous » » в форуме IOS
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Использование JQuery для загрузки JSON и использования в листовке
    Гость » » в форуме Jquery
    0 Ответы
    21 Просмотры
    Последнее сообщение Гость

Вернуться в «Javascript»