Поиск объектов на карте с помощью OpenLayers
-
- Bot
- Сообщения: 276
- Зарегистрирован: 03 фев 2008, 23:13
- Репутация: 3
Поиск объектов на карте с помощью OpenLayers
Обсуждение статьи "Поиск объектов на карте с помощью OpenLayers"
http://gis-lab.info/qa/ol-search.html
http://gis-lab.info/qa/ol-search.html
-
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 13 мар 2009, 10:06
- Репутация: 0
Re: Поиск объектов на карте с помощью OpenLayers
Подскажите пожалуйста, на основе вашего примера пытаюсь организовать поиск для точек, но вот при определении геометрии, координаты широты/долготы не определяются. Выдает "Empty geometry".
SP_GEOMETRY - колонка геометрии. Как правильно запросить координаты точки?
SP_GEOMETRY - колонка геометрии. Как правильно запросить координаты точки?
Код: Выделить всё
$str = "SELECT * FROM bs WHERE shifr_bs= '".$code."'";
echo $str."*";
$result = pg_query($dbh, "select ST_X(SP_GEOMETRY) as st_x, ST_Y(SP_GEOMETRY) as st_y from ($str) AS coord");
$row = pg_fetch_array($result);
if (!empty($row['st_x'])&&!empty($row['st_y'])){
echo $row['st_x'].",".$row['st_y'];
}
else
echo "Empty geometry";
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
Вроде все правильно делаете, а вручную (не через php) аналогичный запрос к базе возвращает какие-нибудь результаты?
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Интересующийся
- Сообщения: 22
- Зарегистрирован: 13 мар 2009, 10:06
- Репутация: 0
Re: Поиск объектов на карте с помощью OpenLayers
все решилось, необходимо было добавить кавычки в запрос и все заработало)
Код: Выделить всё
$coord="select st_x(\"SP_GEOMETRY\") as st_x, st_y(\"SP_GEOMETRY\") as st_y from ($str) AS coord";
-
- Новоприбывший
- Сообщения: 10
- Зарегистрирован: 31 май 2010, 00:29
- Репутация: 0
Re: Поиск объектов на карте с помощью OpenLayers
почему то не выполняется функция layer.mergeNewParams({sql:response[1]}); (((
в чем может быть прикол?
в чем может быть прикол?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
В примере, рассмотренном в статье, вместо строки: используется Возможно, в этом ошибка.
Код: Выделить всё
layer.mergeNewParams({sql:response[1]});
Код: Выделить всё
sel.mergeNewParams({sql:response[0]});
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
А возможно ли повторно рэндерить по запросу слой, если этот слой из шейп файла, а не из базы PostGis? Чтоб сделать выделение контура при клике или по результату поиска
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Поиск объектов на карте с помощью OpenLayers
Layer.redraw подойдет? Или так (у меня сейчас почему то не работает).
лангольеры под окном жрали время ом-ном-ном
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
Во второй ссылке у меня тоже почемуто не работает выделение по клику))). Может я не правильно сформулировал вопрос...я имел ввиду можно ли из OL послать запрос мапсерверу, чтоб он показал слой (перерисовал его) на основе определенного фильтра. Например кликнул по зданию и отобразился второй слой с домами, где в качестве фильтра зданий можно было бы указать те поля, которые получил из объекта по которому кликнул. Т.е. кликаю по зданию, получаю его поля: "улица, номер дома", далее посылаю запрос мапсерверу: "улица, номер дома", он фильтрует здания по этому фильтру и выдает мне другой слой, где будет только этот дом (в описании слоя изменяем цвет дома на другой), в результате пользователь видет изменения цвета здания по которому кликнул. Вот как бы так динамически формировать новый слой для меня остается загадкой и возможно ли такое вообще реализовать при условии, что слои хранятся не в postgis, а в шейпах?...блин расписался тут, прям поэма
))
![Smile :)](./images/smilies/icon_smile.gif)
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Поиск объектов на карте с помощью OpenLayers
Теоретически можно. Проще всего через SLD (и фильтр и цвет), но в UMN [на апрель месяц] был баг, который все ломает. Можно через подстановку значений в FILTER слоя. (Черновик моей статьи именно про это валяется в админке блога уже полгода и еще столько же, вероятно, будет пылится...)
лангольеры под окном жрали время ом-ном-ном
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
Через SLD...это как, где можно посмотреть об этом и черновик тоже?
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Поиск объектов на карте с помощью OpenLayers
Забросил черновик в wiki. Учтите, что это только набросок статьи.
Про SLD нужно рассказывать отдельно, с наскоку там все кажется очень навороченным.
Про SLD нужно рассказывать отдельно, с наскоку там все кажется очень навороченным.
лангольеры под окном жрали время ом-ном-ном
- Mavka
- Гуру
- Сообщения: 2060
- Зарегистрирован: 14 мар 2008, 17:36
- Репутация: 9
Re: Поиск объектов на карте с помощью OpenLayers
dobeer
Как продвигается?
Как продвигается?
лангольеры под окном жрали время ом-ном-ном
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Поиск объектов на карте с помощью OpenLayers
Бегло взглянул...как то все замутно показалось, решил пока отложить разбирательство этого вопроса
-
- Участник
- Сообщения: 76
- Зарегистрирован: 29 ноя 2010, 19:35
- Репутация: 0
Re: Поиск объектов на карте с помощью OpenLayers
хочу создать организовать поиск, но почему-то не получилось со своими данными http://niczem.zapto.org/geo/search.html
теперь повторно пытаюсь разобраться, но не получается запустить даже пример который на странице
это тестовая http://niczem.zapto.org/geo/test.html
разве с этим примером не должен работать? брать информацию с ваших сайтов?
теперь повторно пытаюсь разобраться, но не получается запустить даже пример который на странице
это тестовая http://niczem.zapto.org/geo/test.html
Спойлер
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://gis-lab.info/programs/js/ol-search.js"></script>
<title>Документ без названия</title>
</head>
<body onLoad="init()">
<form name='form'>
<table>
<tr>
<td valign="top">
<div id="map" style="width: 400px; height: 300px">
</div>
</td>
<td>
<p><strong>Название населенного пункта:</strong></p>
<select name='name'>
<option value=''>Select one</option>
<option value='2200800000200'>Акутиха</option>
<option value='2200000200000'>Алейск</option>
<option value='2200300000100'>Алтайский</option>
<option value='2204700000300'>Алтайское</option>
</select>
<input type="button" value="Search" onclick="getext()">
</td>
</tr>
</table>
</form>
</body>
</html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script src="http://gis-lab.info/programs/js/ol-search.js"></script>
<title>Документ без названия</title>
</head>
<body onLoad="init()">
<form name='form'>
<table>
<tr>
<td valign="top">
<div id="map" style="width: 400px; height: 300px">
</div>
</td>
<td>
<p><strong>Название населенного пункта:</strong></p>
<select name='name'>
<option value=''>Select one</option>
<option value='2200800000200'>Акутиха</option>
<option value='2200000200000'>Алейск</option>
<option value='2200300000100'>Алтайский</option>
<option value='2204700000300'>Алтайское</option>
</select>
<input type="button" value="Search" onclick="getext()">
</td>
</tr>
</table>
</form>
</body>
</html>
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 25 гостей