Страница 1 из 1
Выпадающие списки <SELECT>, PostgreSQL+PostGIS, MapServer
Добавлено: 05 ноя 2008, 07:02
arzobispo
Доброго времени суток!
У меня такая проблема, не могу сделать (вернее связать его с запросом SQL) выпадающий список на html-странице. Сейчас у меня на html-странице все сделано с использованием checkbox'ов, но по скольку это не самый удобный вариант, если список значений велик. Описание проблемы: на web-странице есть выпадающий список <SELECT></SELECT>, его необходимо связать с SQL запросом, находящимся в мар-файле, чтобы при выборе нужного значения на карте закрашивались квадратики соответствующие запросу. Например, в 36 клетках сидят животные, 2 белого цвета, один черного, 3 рыжих, в остальныех одного цвета, и вот когда выбираю из списка "Белый", нажимаю кнопку Выбрать, в результате на карте закрашиваются 2 квадратика.
Re: Выпадающие списки <SELECT>, PostgreSQL+PostGIS, MapServer
Добавлено: 05 ноя 2008, 08:10
Максим Дубинин
так чем не годится, то как это сделано
здесь?
Re: Выпадающие списки <SELECT>, PostgreSQL+PostGIS, MapServer
Добавлено: 05 ноя 2008, 09:50
arzobispo
Видишь в чем дело, в примере, что ты мне давал линк, там формирутеся запрос на JavaScript и отправляется в мар-файл, у меня наоборот, в мар-файле есть SQL запрос, к которому мне надо привязать выпадающий список <select></select>. Это вызвано тем, что у меня с JavaScript туго, а том случае, что у меня JavaScript не нужен

Re: Выпадающие списки <SELECT>, PostgreSQL+PostGIS, MapServer
Добавлено: 05 ноя 2008, 13:03
Denis Rykov
Подобная задача решается элементарно путем использования html форм. Например:
1. Map-файл:
Код: Выделить всё
MAP
IMAGETYPE GIF
EXTENT -1.782351 0.244013 -0.618259 1.314817
SIZE 400 300
WEB
TEMPLATE "/ms4w/apps/mslocal/templates/example.html"
IMAGEPATH "/ms4w/tmp/ms_tmp/"
IMAGEURL "/ms_tmp/"
END
LAYER
NAME "base"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM prostokarta_region USING SRID=4326"
TYPE POLYGON
CLASS
COLOR 125 234 100
OUTLINECOLOR 100 100 100
END
END
LAYER
NAME "prostokarta_region"
CONNECTIONTYPE postgis
CONNECTION "user=postgres password=1234 dbname=postgis host=localhost"
DATA "the_geom FROM
(
SELECT prostokarta_region.the_geom AS the_geom,
prostokarta_region.oid AS oid,
animals.color AS acolor
from prostokarta_region, animals
where (animals.id = prostokarta_region.id) and (animals.color='%col%')
)
AS new_table USING SRID=4326"
TYPE POLYGON
CLASSITEM "acolor"
CLASS
NAME "Белые"
EXPRESSION 'Белый'
COLOR 255 255 255
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Черные"
EXPRESSION 'Черный'
COLOR 0 0 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Желтые"
EXPRESSION 'Желтый'
COLOR 255 255 0
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Серые"
EXPRESSION 'Серый'
COLOR 100 100 100
OUTLINECOLOR 100 100 100
END
CLASS
NAME "Рыжие"
EXPRESSION 'Рыжий'
COLOR 200 100 0
OUTLINECOLOR 100 100 100
END
END
END
2. HTML-шаблон:
Код: Выделить всё
<html>
<head>
<title>Example</title>
</head>
<body>
<!-- ОПИСАНИЕ MAPSERVER-ФОРМЫ -->
<form name="mapserv" method="GET" action="/cgi-bin/mapserv.exe">
<input type="hidden" name="map" value="[map]">
<select name ="col" size=1>
<option value='Белый'>Белые</option>
<option value='Черный' selected>Черные</option>
<option value='Желтый'>Желтые</option>
<option value='Серый'>Серые</option>
<option value='Рыжий'>Рыжие</option>
</select>
<input type="submit" value="Запросить">
<input type="hidden" name="layer" value="prostokarta_region">
<input type="hidden" name="layer" value="base">
<input type="hidden" name="mode" value="browse">
</form>
<div align="center">
<input type="image" name="img" src="[img]" width="300" height="200">
</div>
</body>
</html>
3. Пример URL:
Код: Выделить всё
http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/mslocal/map/example.map&layer=prostokarta_region&layer=base&mode=browse
Re: Выпадающие списки <SELECT>, PostgreSQL+PostGIS, MapServer
Добавлено: 05 ноя 2008, 18:15
arzobispo
Денис, выражаю тебе ОГРОМНУЮ благодарность!!!!
Всё работает!!!