Я работаю над тем, чтобы пользователи могли перемещать маркер без перетаскивания.Обычно пользователь нажимает на маркер, и он открывает всплывающее окно с информационным окном.В пузыре есть ссылка на функцию JavaScript, которая устанавливает событие клика на карте.Когда пользователь щелкает где-то на карте, он должен переместить маркер в точку, которую щелкнули.
На моей карте 18 уровней масштабирования.На уровне масштабирования 15 этот процесс работает отлично.Если я увеличу масштаб ПОСЛЕ щелчка один раз, маркер все еще перемещается точно в то место, где я щелкаю.Но затем, если я обновлюсь и начну сначала с уровня масштабирования 16 и попытаюсь щелкнуть где-нибудь, маркер переместится в положение выше и больше влево.Повторяя этот процесс при более высоких уровнях масштабирования, маркер перемещается еще больше вверх и влево на карте (по расстоянию).
Выполнение вышеизложенного при уровнях масштабирования ниже 15 также отлично работает.
Вот фрагмент кода:
lmLayer = new OpenLayers.Layer.Markers("Landmark Creation");
map.addLayer(lmLayer);
var marker = landmark['landmark_1234'];// this just pulls the marker out of storage
map.events.register("click", lmLayer, function(evt){
var pixel = new OpenLayers.Pixel(evt.clientX,evt.clientY);
marker.moveTo(pixel);
OpenLayers.Event.stop(evt);
});
Я отключил консоль, выполнив щелчки clientX и clientY, и они зарегистрировали правильные координаты x / y от левого и верхнего краев браузера.Но кажется, что OL неправильно рассчитывает moveTo при уровнях масштабирования выше 15.
Есть идеи?