Удалить маркер по щелчку (OpenLayers)

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
AGENTxXx
Интересующийся
Сообщения: 15
Зарегистрирован: 28 фев 2012, 13:10
Репутация: 0

Удалить маркер по щелчку (OpenLayers)

Сообщение AGENTxXx » 22 авг 2012, 10:01

Добрый день!
Можете подсказать, как узнать, по какому маркеру кликнули?
Использую слой Vector и метод addFeature для добавления маркера.

Код: Выделить всё

var feature = new OpenLayers.Feature.Vector(
		 new OpenLayers.Geometry.Point(-71, 42),
		 {some:'data'},
		 {externalGraphic: '../images/icons/location.png', graphicHeight: 21, graphicWidth: 25});
		vectorLayer.addFeatures(feature);
Задача решается такая: при установке маркера открывается диалоговое окно, где пользователь может задать некоторые параметры к маркеру и выбрать 3 действия: ОК, Отмена и Удалить маркер. Но при отмене маркер остается. В итоге может быть много маркеров. И необходимо узнать, какой же маркер хочет удалить пользователь.
Где хранятся все маркеры, я нашел (в моем случае, например: map.layers[1].removeFeatures(map.layers[1].features[map.layers[1].features.length-1]);, а вот как удалить нужных - не знаю.

Подскажите, пожалуйста!

AGENTxXx
Интересующийся
Сообщения: 15
Зарегистрирован: 28 фев 2012, 13:10
Репутация: 0

Re: Удалить маркер по щелчку (OpenLayers)

Сообщение AGENTxXx » 22 авг 2012, 10:39

Методом тыка нашел следующий способ:
var f = new OpenLayers.Feature.Vector();
f.id = your_id;

Но все же, может кто знает, как указать id при создании, т.е. не выделяя отдельно f.id...

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Удалить маркер по щелчку (OpenLayers)

Сообщение Denis Rykov » 22 авг 2012, 19:21

Вам нужно узнать по какому векторному объекту кликнули? А какой способ для клика по фичам вы используете, контрол SelectFeature?
Spatial is now, more than ever, just another column- The Geometry Column.

AGENTxXx
Интересующийся
Сообщения: 15
Зарегистрирован: 28 фев 2012, 13:10
Репутация: 0

Re: Удалить маркер по щелчку (OpenLayers)

Сообщение AGENTxXx » 25 фев 2014, 15:35

Как то сам нашел решение. В общем удаление осуществляем через Контрол и события:

Код: Выделить всё

//Добовляем управляющий Control, отвечающий за выделения и снятие выделения с маркера
	gameGlobalQuestSelectControl = new OpenLayers.Control.SelectFeature(globalQuestsVectorLayer,
	{
		onSelect: onPopupFeatureSelect,
		onUnselect: onPopupFeatureUnselect 
	});

function onPopupFeatureSelect(feature) 
{
      map.layers[1].getFeatureById(feature.id).destroy();
}

map.addControl(gameGlobalQuestSelectControl);	
gameGlobalQuestSelectControl.activate();	
Вдруг кому-нибудь еще пригодится

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя