Страница 1 из 1

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

Добавлено: 27 мар 2013, 14:52
Alone
Добрый день.

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

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

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

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

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

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);
		}		
Как-то так. Код написал руками, возможно с синтаксической ошибкой, но идея понятна.

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

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

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

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

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

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

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

Добавлено: 28 мар 2013, 11:03
Alone
Ну, как говорится, читайте доки, они рулез!
Денис, в очередной раз спасибо, рецепты всегда кстати!