#asp.net #openlayers
#asp.net #openlayers
Вопрос:
Я добавил маркеры, добавив слой в OpenLayers. Я использую его в своем проекте asp, загружаю карту и могу добавлять несколько значков. Теперь я загружаю свои местоположения и показываю их с помощью этих значков. Мой код выглядит следующим образом:
for (var i = 0; i < loc.length; i ) {
LocationArray.push(loc[i]);
iconFeature = new ol.Feature({
geometry: new ol.geom.Point(ol.proj.fromLonLat(loc[i])),
name: 'Null Island',
population: 4000,
rainfall: 500
});
iconFeatures.pop();
debugger
iconFeatures.push(iconFeature);
vectorSource = new ol.source.Vector({
features: iconFeatures //add an array of features
});
iconStyle = new ol.style.Style({
image: new ol.style.Icon(({
anchor: [0.5, 100],
anchorXUnits: 'fraction',
anchorYUnits: 'pixels',
opacity: 0.8,
src: '/images/icon.png',
}))
});
vectorLayer = new ol.layer.Vector({
source: vectorSource,
style: iconStyle
});
map.addLayer(vectorLayer);
}
Теперь я хочу удалить этот слой, когда я нажимаю на него.
Я могу определить, где на него нажали, и я отвечаю на это, но я не знаю, как я могу его удалить.
Мой код выглядит следующим образом:
map.on('click', function (evt) {
var feature = map.forEachFeatureAtPixel(evt.pixel, function (feature) {
return feature;
});
if (feature) {
var coordinates = feature.getGeometry().getCoordinates();
if (confirm("Do you want to delete?")) {
// What should I code here?
}
} else {
// .....
}
});
Ответ №1:
forEachFeatureAtPixel
Обратный вызов также может получить слой, если вы сохраните, что слой легко удалить:
map.on('click', function (evt) {
var vectorLayer;
var feature = map.forEachFeatureAtPixel(evt.pixel, function (feature, layer) {
vectorLayer = layer;
return feature;
});
if (feature) {
var coordinates = feature.getGeometry().getCoordinates();
if (confirm("Do you want to delete?")) {
map.removeLayer(vectorLayer);
}
} else {
// .....
}
});
Ответ №2:
Если вы хотите сохранить слой, но удалить маркеры, вы можете использовать метод clear().
vectorLayer.getSource().clear();
Ответ №3:
Спасибо за ответ, я нашел его по map.removeLayer(layer);
коду