Страница 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
Ну, как говорится, читайте доки, они
рулез!
Денис, в очередной раз спасибо, рецепты всегда кстати!