Добрый день.
Допустим, я имею id точки слоя. Как можно осуществить перемещение (только этой) точки, только не классическим drag&drop, а единичным кликом в указаное место на карте? Тобишь, сначала выделили точку на карте, получили попап с её некими данными (это есть уже) и из её контекстного меню активируем контрол "хитрого" перемещения ТОЛЬКО ЭТОЙ точки.
Буду рад любой подсказке.
OpenLayers перемещение точки не drag&drop. Как?
-
- Интересующийся
- Сообщения: 31
- Зарегистрирован: 20 дек 2011, 23:32
- Репутация: 0
-
- Интересующийся
- Сообщения: 38
- Зарегистрирован: 08 апр 2011, 09:53
- Репутация: 2
Re: OpenLayers перемещение точки не drag&drop. Как?
Координаты клика можно получить, например так:
(мне координаты курсора часто нужны для других целей, поэтому в глобальной переменной всегда актуальные координаты)
Точку можно подвинуть так:
Как-то так. Код написал руками, возможно с синтаксической ошибкой, но идея понятна.
Извининяюсь, не дописал как поймать клик и не оформил код должным образом, - нужно срочно убегать
Дальше думаю, не сложно догадаться..
(мне координаты курсора часто нужны для других целей, поэтому в глобальной переменной всегда актуальные координаты)
Код: Выделить всё
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);
}
Извининяюсь, не дописал как поймать клик и не оформил код должным образом, - нужно срочно убегать

Дальше думаю, не сложно догадаться..
-
- Интересующийся
- Сообщения: 31
- Зарегистрирован: 20 дек 2011, 23:32
- Репутация: 0
Re: OpenLayers перемещение точки не drag&drop. Как?
Да. Это вполне себе подходящий вариант.
Извинения не принимаются, так как код никто и не требовал
идея ясна! спасибо.
А я раздумывал над modifyFeature, но он, блин, если его включить, таскает все объекты на карте. Вот и ступорнулся, как его ограничить...
Извинения не принимаются, так как код никто и не требовал

А я раздумывал над modifyFeature, но он, блин, если его включить, таскает все объекты на карте. Вот и ступорнулся, как его ограничить...
-
- Интересующийся
- Сообщения: 31
- Зарегистрирован: 20 дек 2011, 23:32
- Репутация: 0
Re: OpenLayers перемещение точки не drag&drop. Как?
Аха! кажется нашел!
new OpenLayers.Control.ModifyFeature(some_layer, {standalone: true})
Ушел пробовать...
new OpenLayers.Control.ModifyFeature(some_layer, {standalone: true})
Ушел пробовать...
-
- Интересующийся
- Сообщения: 31
- Зарегистрирован: 20 дек 2011, 23:32
- Репутация: 0
Re: OpenLayers перемещение точки не drag&drop. Как?
Ну, как говорится, читайте доки, они рулез!
Денис, в очередной раз спасибо, рецепты всегда кстати!
Денис, в очередной раз спасибо, рецепты всегда кстати!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 5 гостей