Mapserver запрос к MySql и php

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Lianik
Новоприбывший
Сообщения: 11
Зарегистрирован: 16 апр 2011, 13:28
Репутация: 0

Mapserver запрос к MySql и php

Сообщение Lianik »

Доброго времени суток.
Появился вопрос общего характера:
Можно ли реализовать запрос к MySql при нажатии на какой-то элемент карты.
Проще говоря, чтобы, ткнув на домик человеку вывелось всплывающее окно (можно js), содержание которого будет взято с таблицы БД.
Если это возможно выполнить, то посоветуйте в какую сторону копать )

Заранее всем спасибо!
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Mapserver запрос к MySql и php

Сообщение Mavka »

Например, такой вариант:
Раз имеем дело с UMN MapServer, то, как правило, сразу создаем враппер на MapScript. Примеры есть в документации. Соответственно, модифицируем обычный враппер:
- если request типа GetMap, то пересылаем запрос на сервер для генерации карты
- если request равен GetFeatureInfo, то:
1. обращаемся к MapServer'у и получаем инфу по указанному элементу (это может быть например id объекта)
2. по полученному id обращаемся в MySql и забираем атрибутивные данные
3. собираем все данные в правильный формат GML (GeoJSON и пр.) и отдаем клиенту
лангольеры под окном жрали время ом-ном-ном
Lianik
Новоприбывший
Сообщения: 11
Зарегистрирован: 16 апр 2011, 13:28
Репутация: 0

Re: Mapserver запрос к MySql и php

Сообщение Lianik »

Возвращаясь к старому теме появилось еще несколько вопросов:
А есть в сети примеры врапперов работающих с запросами GetFeatureInfo?
Для запросов GetMap и GetFeaureInfo нужно писать два разных враппера или их можно запаковать в один файл?
Спасибо.
Аватара пользователя
Mavka
Гуру
Сообщения: 2060
Зарегистрирован: 14 мар 2008, 17:36
Репутация: 9

Re: Mapserver запрос к MySql и php

Сообщение Mavka »

Я делал на php (объединял WMS и WFS), но раздавать не разрешают :(
Поговорю с др. заказчиком, может согласится открыть враппер с пересечением dateline...

Объединить в одном враппере два запроса можно. В доках есть примеры на Perl и Python:
Считываем аргументы:

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

$req->loadParams(); 
и сравниваем тип запроса

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

$req->getValueByName('REQUEST') eq "GetCapabilities" 
дальше ветвление if ... else.
лангольеры под окном жрали время ом-ном-ном
Lianik
Новоприбывший
Сообщения: 11
Зарегистрирован: 16 апр 2011, 13:28
Репутация: 0

Re: Mapserver запрос к MySql и php

Сообщение Lianik »

Жаль, конечно, что не дают показать ваши решения, но это их право...
Я так понял, нужно написать что-то вроде:

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

if ($request->getValueByName('REQUEST') == "GetMap") { 

   bla-bla-bla; 
}
else {
  bla-bla;
}
Правда, пока не понятно, как в переменную php запихнуть сам ответ сервера, ну и следовательно, как потом, после обработки, полученный в html результат выдать на-гора?
Спасибо!
Аватара пользователя
wmk
Активный участник
Сообщения: 102
Зарегистрирован: 11 янв 2009, 17:38
Репутация: 0
Откуда: Казань
Контактная информация:

Re: Mapserver запрос к MySql и php

Сообщение wmk »

Столько буковок написали уже :) я пожалуй тоже чутка добавлю.

Обработчик клика вешался на элемент вроде так

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

element.events.register("click", null, myFunction);

Либо на чистом JS

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

element.addEventListener("load",handler,false);

Отправить запрос на сервак, я так понял бэк на пхп написан, легче всего через JQuery либо OpenLayers если есть
OL, нашел в древних скриптах, сейчас возможно все поменялось

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


function setHTML(response)
{
alert(response.responseText);
}
...

function GetHTML(response)
{
var url = layer.getFullRequestString(
{
REQUEST: "GetFeatureInfo",
EXCEPTIONS: "application/vnd.ogc.se_xml",
BBOX: layer.map.getExtent().toBBOX(),
X: e.xy.x,
Y: e.xy.y,
QUERY_LAYERS: 'streets',
WIDTH: layer.map.size.w,
HEIGHT: layer.map.size.h
});

OpenLayers.loadURL(url, '', this, setHTML);
}

Либо на JQuery

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


function twitter_import(div){ $.post("/system/dom/GetTwitterMessages.php", {}, function(data) { $('#'+div).html(data); });}

На стороне сервера нужно просто выдать ту информацию которая нужна пользователю по типу

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

echo 'Hello world!';
OurGuns.ru - пневматическое оружие России и мира
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие
Lianik
Новоприбывший
Сообщения: 11
Зарегистрирован: 16 апр 2011, 13:28
Репутация: 0

Re: Mapserver запрос к MySql и php

Сообщение Lianik »

Не знаю, может я сделал и не правильно, но оказалось всё просто:

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

$feature = ms_iogetstdoutbufferstring();
   echo $feature;
Обычное echo вывело результат в OL...
Ответить

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

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

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