OpenLayers: как перейти к нужному экстенту выбрав значение
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
OpenLayers: как перейти к нужному экстенту выбрав значение
А вот меня интересует, как перейти к нужному экстенту выбрав значение из выпадающего списка и чтоб список был прокручивающимся
- Максим Дубинин
- MindingMyOwnBusiness
- Сообщения: 9128
- Зарегистрирован: 06 окт 2003, 20:20
- Репутация: 747
- Ваше звание: NextGIS
- Откуда: Москва
- Контактная информация:
Re: OpenLayers: Переключение слоев кнопой
например вот так (выберите регион)
http://gis-lab.info/projects/osm-errors.html
http://gis-lab.info/projects/osm-errors.html
пристегивайтесь, турбулентность прямо по курсу
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Глянул, попытался внедрить)))...список получился, но без реакции при выборе. Может черканете коротенький пример из пары значений, пожалуйста.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
js-функция:
HTML-форма:
Код: Выделить всё
function select_func(A) {
var B = A;
var bounds = new OpenLayers.Bounds.fromString(B);
map.zoomToExtent(bounds);
}
Код: Выделить всё
<form>
<select name="list" onchange="select_func(this.value)">
<option selected value="2999537.617487,5040238.780968,20037508.342789,16854703.690633" SELECTED>Россия
<option selected value="2580039.52835695,6666776.75121229,3648029.36543675,7591493.95982412">Беларусь
<option selected value="2463376.66463638,5526059.96225167,4475866.16217401,6867188.3427968">Украина
...
</select>
</form>
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Подскажите пожалуйста, как вышепроделанное сделать если список или кнопка находятся на одной странице, а карта на другой?
- wmk
- Активный участник
- Сообщения: 102
- Зарегистрирован: 11 янв 2009, 17:38
- Репутация: 0
- Откуда: Казань
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Всмысле во Frame? , или в другом окне?
OurGuns.ru - пневматическое оружие России и мира
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие
Пневматическое оружие , Страйкбольное оружие , Пейнтбольное оружие
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Сам сайт визуально виден как одна страница, но физически левое поле (с меню) это другая Html страница...я так понимаю это Frame.. Вот на ней я и хочу разместить управляющие картой кнопки, списки, флажки...но не знаю как обратиться к карте расположенной физически на другом Html
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
ну пожалуста, хоть ктонить подскажите, а то проект встал
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Проблему решил сам, так:
где - имя фрейма с картой
Код: Выделить всё
parent.frames.main.map.zoomToExtent(bounds)
Код: Выделить всё
main
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 01 сен 2010, 05:59
- Репутация: 0
Re: OpenLayers: Переключение слоев кнопой
Ага, то что нужно, только вопрос, как можно сгенерить такой список регионов автоматически? Интересует откуда берутся границы экстента, не руками же они туда заносились?Максим Дубинин писал(а):например вот так (выберите регион)
http://gis-lab.info/projects/osm-errors.html
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Если список большой, то из БД вытаскивать координаты, перед этим их туда конечно нужно занести. Например как делал я можно перегнать шейп-файл с объектами (дома например) в БД PostgreSQL там будет поле с координатами объектов. От туда уже в базу MySQL на сервере...ну вот как то так в кратце. Сгенерировать список можно в PHP...
-
- Интересующийся
- Сообщения: 29
- Зарегистрирован: 01 сен 2010, 05:59
- Репутация: 0
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
если там структура как у SDE - то на php выглядеть будет примерно так:
Соответственно, обращаемся через php, ссылка вида "map.php?layer=layername&id=shapeid". Карта сразу же грузиться в нужном экстенте.
Код: Выделить всё
define( "MAPFILE", "C:/ms4w/apps/maps/map.map" );
define( "MODULE", "php_mapscript.dll" );
// load the mapscript module
if (!extension_loaded("MapScript")) dl(MODULE);
// open map
$oMap = ms_newMapObj( MAPFILE );
if(!empty($_GET['layer']) && !empty($_GET['id']))
{
$serverName='(local)';
$connectionOptions = array("UID"=>'user', "PWD"=>'psswduser', "Database"=>'sde', "CharacterSet"=>"UTF-8");
$conn=sqlsrv_connect($serverName, $connectionOptions);
$sql='SELECT g_table_name FROM sde.SDE_geometry_columns WHERE f_table_name=\''.$_GET['layer'].'\';';
$query = sqlsrv_query($conn, $sql);
$row = sqlsrv_fetch_array($query);
$table=$row[0];
$sql='SELECT eminx, eminy, emaxx, emaxy FROM '.$table.' WHERE fid='.$_GET['id'].';';
$query = sqlsrv_query($conn, $sql);
$row = sqlsrv_fetch_array($query);
//void setExtent(double minx, double miny, double maxx, double maxy)
$xl=$row[0]; $yb=$row[1]; $xr=$row[2]; $yt=$row[3];
if(($xr-$xl)<30000)
{
$xr=$row[2]+(30000-($row[2]-$row[0]))/2;
$xl=$row[0]-(30000-($row[2]-$row[0]))/2;
}
if(($yt-$yb)<30000)
{
$yt=$row[3]+(30000-($row[3]-$row[1]))/2;
$yb=$row[1]-(30000-($row[3]-$row[1]))/2;
}
$oMap->setExtent($xl, $yb, $xr, $yt);
}
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: OpenLayers: Переключение слоев кнопой
Параметры охватов были вычислены с помощью PostGIS следующей командой:Artem писал(а):Ага, то что нужно, только вопрос, как можно сгенерить такой список регионов автоматически? Интересует откуда берутся границы экстента, не руками же они туда заносились?Максим Дубинин писал(а):например вот так (выберите регион)
http://gis-lab.info/projects/osm-errors.html
Код: Выделить всё
SELECT ST_Extent(the_geom),reg from all_bounds GROUP by reg
Spatial is now, more than ever, just another column- The Geometry Column.
-
- Новоприбывший
- Сообщения: 1
- Зарегистрирован: 25 сен 2010, 19:27
- Репутация: 0
Re: OpenLayers: как перейти к нужному экстенту выбрав значение
Здравствуйте.
Хорошо.
А как плавно перейти(перелететь) к нужной точки?
Спасибо.
map.panTo() не подходит, т.к. он работает плавно только в текущем экстенде
Хорошо.
А как плавно перейти(перелететь) к нужной точки?
Спасибо.
map.panTo() не подходит, т.к. он работает плавно только в текущем экстенде
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 10 гостей