Страница 1 из 1
Mapserver запрос к MySql и php
Добавлено: 16 апр 2011, 13:48
Lianik
Доброго времени суток.
Появился вопрос общего характера:
Можно ли реализовать запрос к MySql при нажатии на какой-то элемент карты.
Проще говоря, чтобы, ткнув на домик человеку вывелось всплывающее окно (можно js), содержание которого будет взято с таблицы БД.
Если это возможно выполнить, то посоветуйте в какую сторону копать )
Заранее всем спасибо!
Re: Mapserver запрос к MySql и php
Добавлено: 16 апр 2011, 19:30
Mavka
Например, такой вариант:
Раз имеем дело с UMN MapServer, то, как правило, сразу создаем враппер на MapScript. Примеры есть в
документации. Соответственно, модифицируем обычный враппер:
- если request типа GetMap, то пересылаем запрос на сервер для генерации карты
- если request равен GetFeatureInfo, то:
1. обращаемся к MapServer'у и получаем инфу по указанному элементу (это может быть например id объекта)
2. по полученному id обращаемся в MySql и забираем атрибутивные данные
3. собираем все данные в правильный формат GML (GeoJSON и пр.) и отдаем клиенту
Re: Mapserver запрос к MySql и php
Добавлено: 05 июл 2011, 23:22
Lianik
Возвращаясь к старому теме появилось еще несколько вопросов:
А есть в сети примеры врапперов работающих с запросами GetFeatureInfo?
Для запросов GetMap и GetFeaureInfo нужно писать два разных враппера или их можно запаковать в один файл?
Спасибо.
Re: Mapserver запрос к MySql и php
Добавлено: 06 июл 2011, 09:56
Mavka
Я делал на php (объединял WMS и WFS), но раздавать не разрешают

Поговорю с др. заказчиком, может согласится открыть враппер с пересечением dateline...
Объединить в одном враппере два запроса можно. В доках есть примеры на
Perl и
Python:
Считываем аргументы:
и сравниваем тип запроса
Код: Выделить всё
$req->getValueByName('REQUEST') eq "GetCapabilities"
дальше ветвление if ... else.
Re: Mapserver запрос к MySql и php
Добавлено: 06 июл 2011, 22:11
Lianik
Жаль, конечно, что не дают показать ваши решения, но это их право...
Я так понял, нужно написать что-то вроде:
Код: Выделить всё
if ($request->getValueByName('REQUEST') == "GetMap") {
bla-bla-bla;
}
else {
bla-bla;
}
Правда, пока не понятно, как в переменную php запихнуть сам ответ сервера, ну и следовательно, как потом, после обработки, полученный в html результат выдать на-гора?
Спасибо!
Re: Mapserver запрос к MySql и php
Добавлено: 16 июл 2011, 01:11
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); });}
На стороне сервера нужно просто выдать ту информацию которая нужна пользователю по типу
Re: Mapserver запрос к MySql и php
Добавлено: 16 июл 2011, 14:59
Lianik
Не знаю, может я сделал и не правильно, но оказалось всё просто:
Код: Выделить всё
$feature = ms_iogetstdoutbufferstring();
echo $feature;
Обычное echo вывело результат в OL...