Поиск объектов на карте с помощью OpenLayers

Обсуждение материалов сайта: вопросы, замечания, предложения
updates-bot
Bot
Сообщения: 276
Зарегистрирован: 03 фев 2008, 23:13
Репутация: 3

Поиск объектов на карте с помощью OpenLayers

Сообщение updates-bot » 24 апр 2010, 06:34

Обсуждение статьи "Поиск объектов на карте с помощью OpenLayers"

http://gis-lab.info/qa/ol-search.html

fati
Интересующийся
Сообщения: 22
Зарегистрирован: 13 мар 2009, 10:06
Репутация: 0

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение fati » 26 май 2010, 16:28

Подскажите пожалуйста, на основе вашего примера пытаюсь организовать поиск для точек, но вот при определении геометрии, координаты широты/долготы не определяются. Выдает "Empty 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
Гуру
Сообщения: 3308
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 488
Ваше звание: Author
Контактная информация:

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Denis Rykov » 27 май 2010, 02:10

Вроде все правильно делаете, а вручную (не через php) аналогичный запрос к базе возвращает какие-нибудь результаты?
Spatial is now, more than ever, just another column- The Geometry Column.

fati
Интересующийся
Сообщения: 22
Зарегистрирован: 13 мар 2009, 10:06
Репутация: 0

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение fati » 27 май 2010, 09:09

все решилось, необходимо было добавить кавычки в запрос и все заработало)

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

$coord="select st_x(\"SP_GEOMETRY\") as st_x, st_y(\"SP_GEOMETRY\") as st_y from ($str) AS coord";

Kherson
Новоприбывший
Сообщения: 10
Зарегистрирован: 31 май 2010, 00:29
Репутация: 0

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Kherson » 31 май 2010, 00:33

почему то не выполняется функция layer.mergeNewParams({sql:response[1]}); (((
в чем может быть прикол?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3308
Зарегистрирован: 11 апр 2008, 21:09
Статьи: 33
Проекты: 9
Репутация: 488
Ваше звание: Author
Контактная информация:

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Denis Rykov » 31 май 2010, 06:54

В примере, рассмотренном в статье, вместо строки:

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

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

Сообщение dobeer » 18 сен 2010, 07:23

А возможно ли повторно рэндерить по запросу слой, если этот слой из шейп файла, а не из базы PostGis? Чтоб сделать выделение контура при клике или по результату поиска

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

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Mavka » 18 сен 2010, 19:02

Layer.redraw подойдет? Или так (у меня сейчас почему то не работает).
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение dobeer » 18 сен 2010, 19:47

Во второй ссылке у меня тоже почемуто не работает выделение по клику))). Может я не правильно сформулировал вопрос...я имел ввиду можно ли из OL послать запрос мапсерверу, чтоб он показал слой (перерисовал его) на основе определенного фильтра. Например кликнул по зданию и отобразился второй слой с домами, где в качестве фильтра зданий можно было бы указать те поля, которые получил из объекта по которому кликнул. Т.е. кликаю по зданию, получаю его поля: "улица, номер дома", далее посылаю запрос мапсерверу: "улица, номер дома", он фильтрует здания по этому фильтру и выдает мне другой слой, где будет только этот дом (в описании слоя изменяем цвет дома на другой), в результате пользователь видет изменения цвета здания по которому кликнул. Вот как бы так динамически формировать новый слой для меня остается загадкой и возможно ли такое вообще реализовать при условии, что слои хранятся не в postgis, а в шейпах?...блин расписался тут, прям поэма :)))

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

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Mavka » 19 сен 2010, 11:46

Теоретически можно. Проще всего через SLD (и фильтр и цвет), но в UMN [на апрель месяц] был баг, который все ломает. Можно через подстановку значений в FILTER слоя. (Черновик моей статьи именно про это валяется в админке блога уже полгода и еще столько же, вероятно, будет пылится...)
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение dobeer » 19 сен 2010, 14:24

Через SLD...это как, где можно посмотреть об этом и черновик тоже?

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

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Mavka » 19 сен 2010, 18:18

Забросил черновик в wiki. Учтите, что это только набросок статьи.
Про SLD нужно рассказывать отдельно, с наскоку там все кажется очень навороченным.
лангольеры под окном жрали время ом-ном-ном

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

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Mavka » 24 сен 2010, 12:17

dobeer
Как продвигается?
лангольеры под окном жрали время ом-ном-ном

Аватара пользователя
dobeer
Активный участник
Сообщения: 199
Зарегистрирован: 25 дек 2009, 21:54
Репутация: 1
Откуда: Чита
Контактная информация:

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение dobeer » 24 сен 2010, 13:00

Бегло взглянул...как то все замутно показалось, решил пока отложить разбирательство этого вопроса

Djinn18
Участник
Сообщения: 76
Зарегистрирован: 29 ноя 2010, 19:35
Репутация: 0

Re: Поиск объектов на карте с помощью OpenLayers

Сообщение Djinn18 » 19 дек 2010, 22:22

хочу создать организовать поиск, но почему-то не получилось со своими данными http://niczem.zapto.org/geo/search.html

теперь повторно пытаюсь разобраться, но не получается запустить даже пример который на странице
это тестовая http://niczem.zapto.org/geo/test.html
вот 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>
разве с этим примером не должен работать? брать информацию с ваших сайтов?

Ответить

Вернуться в «Материалы сайта»