OpenLayers перемещение точки не drag&drop. Как?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Alone
Интересующийся
Сообщения: 31
Зарегистрирован: 20 дек 2011, 23:32
Репутация: 0

OpenLayers перемещение точки не drag&drop. Как?

Сообщение Alone » 27 мар 2013, 14:52

Добрый день.

Допустим, я имею id точки слоя. Как можно осуществить перемещение (только этой) точки, только не классическим drag&drop, а единичным кликом в указаное место на карте? Тобишь, сначала выделили точку на карте, получили попап с её некими данными (это есть уже) и из её контекстного меню активируем контрол "хитрого" перемещения ТОЛЬКО ЭТОЙ точки.

Буду рад любой подсказке.

Tokha
Интересующийся
Сообщения: 38
Зарегистрирован: 08 апр 2011, 09:53
Репутация: 2

Re: OpenLayers перемещение точки не drag&drop. Как?

Сообщение Tokha » 27 мар 2013, 15:39

Координаты клика можно получить, например так:
(мне координаты курсора часто нужны для других целей, поэтому в глобальной переменной всегда актуальные координаты)

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

map.events.register("mousemove", map, function(e){
		mousePosition = this.events.getMousePosition(e);
});
Точку можно подвинуть так:

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

		var pointLayer = map.getLayer('Слой_с_точкой');
		if (pointLayer.features[0]){ // это наша точка
				var newPoint = new OpenLayers.LonLat(mousePosition.x, mousePosition.y);

				pointLayer.features[0].geometry.x = newPoint.lon;
				pointLayer.features[0].geometry.y = newPoint.lat;

				pointLayer.redraw(true);
		}		
Как-то так. Код написал руками, возможно с синтаксической ошибкой, но идея понятна.

Извининяюсь, не дописал как поймать клик и не оформил код должным образом, - нужно срочно убегать :)
Дальше думаю, не сложно догадаться..

Alone
Интересующийся
Сообщения: 31
Зарегистрирован: 20 дек 2011, 23:32
Репутация: 0

Re: OpenLayers перемещение точки не drag&drop. Как?

Сообщение Alone » 27 мар 2013, 16:44

Да. Это вполне себе подходящий вариант.
Извинения не принимаются, так как код никто и не требовал :) идея ясна! спасибо.

А я раздумывал над modifyFeature, но он, блин, если его включить, таскает все объекты на карте. Вот и ступорнулся, как его ограничить...

Alone
Интересующийся
Сообщения: 31
Зарегистрирован: 20 дек 2011, 23:32
Репутация: 0

Re: OpenLayers перемещение точки не drag&drop. Как?

Сообщение Alone » 27 мар 2013, 16:46

Аха! кажется нашел!
new OpenLayers.Control.ModifyFeature(some_layer, {standalone: true})
Ушел пробовать...

Alone
Интересующийся
Сообщения: 31
Зарегистрирован: 20 дек 2011, 23:32
Репутация: 0

Re: OpenLayers перемещение точки не drag&drop. Как?

Сообщение Alone » 28 мар 2013, 11:03

Ну, как говорится, читайте доки, они рулез!
Денис, в очередной раз спасибо, рецепты всегда кстати!

Ответить

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

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

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