#javascript #onclick #zooming #openlayers #marker
#javascript #onclick #масштабирование #openlayers #маркер
Вопрос:
Я хочу создать событие по щелчку на маркере, которое масштабируется на определенном уровне при нажатии. текущий код загружает маркер и при щелчке увеличивает масштаб до максимального уровня масштабирования маркера. Я хочу добавить определенный уровень масштабирования в коде, поэтому, когда на маркере происходит событие щелчка, он должен установить вид на этом уровне масштабирования.у меня есть растровые плитки на карте с уровнем масштабирования 16 и выше, поэтому, когда я нажимаю на маркер, он должен увеличивать растровые плитки и скрывать маркер оттуда.
var marker = new ol.layer.Vector({
source: new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: "data.js"
}),
style: new ol.style.Style({
image: new ol.style.Icon({
anchor: [0.5, 0.5],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
scale:0.03,
src: "img.png"
})
})
});
map.addLayer(marker);
map.on("singleclick", (event) => {
const feature = map.forEachFeatureAtPixel(event.pixel, (feature) => {
return feature;
});
if (feature instanceof ol.Feature) {
map.getView().fit(feature.getGeometry());
}
});
Ответ №1:
Вместо использования подгонки установите центр вида и масштаб
map.getView().setCenter(ol.extent.getCenter(feature.getGeometry().getExtent()));
map.getView().setZoom(16);
Вы можете «скрыть» объект, присвоив ему нулевой стиль
feature.setStyle(null);
Комментарии:
1. Спасибо за помощь. он отлично работает для масштабирования местоположения, но функция все еще видна после присвоения нулевого значения. есть ли какое-либо конкретное местоположение, которое мне нужно назначить для его работы?
2. ОК, значение null не переопределяет стиль слоя, поэтому используйте пустой массив стилей
feature.setStyle([]);