Рисование и сохранение маршрутов OpenLayers

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 29 окт 2012, 23:55

Привет всем :)
Я полгода занимаюсь с OpenLayers, но всегда возникают вопросы, в которых я слаб. И это один из них. Я надеюсь вы сможете чем-то помочь мне в этом.

Нужно реализовать такой функционал. Пользователь нажимает кнопку "Добавить новый маршрут". На карте он начинает рисовать маршрут, указывая контрольные точки (Остановки). При завершении рисования, он указывает другие параметры этого маршрута (имя, описание и прочее). Как теперь это все можно сохранить в базу? Хотя главный вопрос здесь: "Как реализовать пользовательскую рисовку этого маршрута?"

Заранее благодарю за любую помощь :)

Аватара пользователя
selfchief
Интересующийся
Сообщения: 23
Зарегистрирован: 17 янв 2012, 13:38
Репутация: 0
Откуда: Rostov-on-Don
Контактная информация:

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение selfchief » 30 окт 2012, 14:48

вы хотите именно маршрут или же просто прямые линии между точками?
Изображение — Дорогу осилит идущий — Изображение

ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 30 окт 2012, 19:05

Нужен именно маршрут. В этом и сложность. Можно было бы использовать PointTrack или Layer.Vector и на нем геометрию точек выводить, но рисовать каждую точку на дороге - это не тот выход.

Аватара пользователя
selfchief
Интересующийся
Сообщения: 23
Зарегистрирован: 17 янв 2012, 13:38
Репутация: 0
Откуда: Rostov-on-Don
Контактная информация:

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение selfchief » 30 окт 2012, 20:19

хорошо.
Вот так вот сделать роутинг от CloudMade: http://developers.cloudmade.com/wiki/op ... de_Routing
Как сделаете, думаю поймете как это все сохранять. Если нет, то напишите, что непонятно, сообщество поможет.
Изображение — Дорогу осилит идущий — Изображение

ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 30 окт 2012, 20:23

Благодарю за помощь :)
Думаю что разберусь со всем этим.

ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 31 окт 2012, 16:42

В продолжении этого же вопроса. Зарегистрировал евенты, срабатывают нужные функции в нужное время. После отрисовки маршрута, получаем на выходе объект LineString. Как же теперь его можно сохранить в базу данных, чтобы в случае необходимости можно было его загрузить обратно на карту.
P.S. Эти маршруты могут удалятся с карты, но в нужное время их все равно можно загрузить на нее.

Аватара пользователя
selfchief
Интересующийся
Сообщения: 23
Зарегистрирован: 17 янв 2012, 13:38
Репутация: 0
Откуда: Rostov-on-Don
Контактная информация:

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение selfchief » 31 окт 2012, 21:24

выложите код, я посмотрю и скорее всего подскажу решение.
Изображение — Дорогу осилит идущий — Изображение

ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 31 окт 2012, 22:13

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

function olBeforeDrawRoute() { //эта функция срабатывает при включении режима рисования
    $('#routes-popup').dialog('close');
    $('#list-routes-div').dialog('close');
    OpenLayersControls['DrawFeatureRoute'].activate(); //это массив созданных контролов на карте
}

function olAfterDrawRoute() { //эта функция срабатывает после окончания рисования на слое
    var layer = OpenLayersTools.Layers.GetLayerByName('Test');
    var test = layer.features[0].geometry; //вот мне нужно как-то сохранить этот тест, я так понял
    layer.removeAllFeatures();
    OpenLayersControls['DrawFeatureRoute'].deactivate();
    $('#list-routes-div').dialog('open');
    $('#routes-popup').dialog('open');
}
События регистрирую вот так:

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

layer.events.on({'featureadded': olAfterDrawRoute});

ghaiklor
Новоприбывший
Сообщения: 6
Зарегистрирован: 29 окт 2012, 19:00
Репутация: 0

Re: Рисование и сохранение маршрутов OpenLayers

Сообщение ghaiklor » 03 ноя 2012, 15:33

Все, разобрался. Спасибо за помощь :)
Все оказалось намного проще. Просто переводил геометрию в WKT и обратно с помощью toString, fromWKT.

Ответить

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

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

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