OpenLayers: начало работы

Обсуждение материалов сайта: вопросы, замечания, предложения
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 01 мар 2011, 22:02

vzik19 писал(а):как раз хотела спросить, почему при указании нескольких wms слоев в квадратных скобках пропадает карта?
Хм, у меня ничего не пропадает. У объекта map есть два различных метода - addLayer и addLayers, первый принимает в качестве параметра - слой, второй - массив слоёв. Указывая массив слоёв, убедитесь, что вы используете метод addLayers.
vzik19 писал(а):я использую дополнительные элементы управления из gis-lab.info/qa/openlayers-begin.html, то у меня буквы иероглифами
Текст самих элементов управления в какой кодировке?
Spatial is now, more than ever, just another column- The Geometry Column.

vzik19
Интересующийся
Сообщения: 35
Зарегистрирован: 10 авг 2010, 15:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение vzik19 » 02 мар 2011, 14:49

_DR_ писал(а):У объекта map есть два различных метода - addLayer и addLayers, первый принимает в качестве параметра - слой, второй - массив слоёв. Указывая массив слоёв, убедитесь, что вы используете метод addLayers.
Спасибо, это все работает, невнимательна к окончаниям :wink:
vzik19 писал(а):Текст самих элементов управления в какой кодировке?
Вот попутно немного уточняю свою проблему:
В html использована кодировка win-1251, а в браузере в подключенных контролах служебные надписи в utf-8:

... // переключатель видимости слоев
map.addControl(new OpenLayers.Control.LayerSwitcher({'ascending':false}));
.....
Проблему решила путем пересохранения файла OpenLayer.js из utf-8 в win-1251 не очень красиво, может кто знает как это сделать правильно?

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

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 02 мар 2011, 14:58

vzik19 писал(а):В html использована кодировка win-1251, а в браузере в подключенных контролах служебные надписи в utf-8
Просто перекодируйте текст html в utf-8.
vzik19 писал(а):Проблему решила путем пересохранения файла OpenLayer.js из utf-8 в win-1251
Совсем не понял для чего вы это сделали.
Spatial is now, more than ever, just another column- The Geometry Column.

vzik19
Интересующийся
Сообщения: 35
Зарегистрирован: 10 авг 2010, 15:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение vzik19 » 02 мар 2011, 15:12

Страничка генерится автоматически в виндовой кодировке

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 12 дек 2011, 11:24

не могу понять почему такие параметры идут в запросе

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

http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/netw2/olblgnet1.map&LAYERS=Blag_network&SERVICE=WMS&VERSION=1.1.1&REQUEST=GetMap&STYLES=&EXCEPTIONS=application%2Fvnd.ogc.se_inimage&FORMAT=image%2Fjpeg&SRS=EPSG%3A4326&BBOX=0.2175789999992,0.14763600000015,1223.2097665,1223.1398235&WIDTH=256&HEIGHT=256
Вроде всё прописал, но из-за неправильного запроса BBOX=0.2175789999992,0.14763600000015,1223.2097665,1223.1398235 слой белый, т.е. не попадает в область видимости. Что неправильно сделал? Когда прописываю в строке браузера нужные цифры то, картинка нормально отображается, а на карте никак не хочет.
Код MAP файла

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

# Map-файлы начинаются с ключевого слова MAP, обозначающего начало
# "map"-объекта. Закрывает map-объект ключевое слово END в конце файла. Вся
# карта, которая будет отображаться пользователю описывается внутри.

MAP
  NAME           "WMS"
  STATUS         ON
  IMAGETYPE      PNG
  EXTENT         0.219579 0.147636 0.223491 0.151293
  SIZE           800 600
#  SHAPEPATH      "/ms4w/apps/Blag_network_polyline/"
  IMAGECOLOR     255 255 255


WEB
#    TEMPLATE  "template.html"
#    IMAGEPATH "H:/ms4w/tmp/ms_tmp/"
#    IMAGEURL  "/tmp/"
	METADATA
                wms_enable_request "*" 
		wms_title "BLG Demo"
		wms_abstract "This is the WMS demo from ADM"
		wms_onlineresource "http://localhost/cgi-bin/mapserv?map=H:/ms4w/apps/netw2/olblgnet1.map&"
		wms_srs "EPSG:4326"

#        wms_onlineresource         "http://localhost/cgi-bin/mapserv?map=H:/ms4w/apps/netw2/olblgnet1.map&"
#        wms_getfeatureinfo         "http://localhost/cgi-bin/mapserv?map=H:/ms4w/apps/netw2/olblgnet1.map&"
#        wms_featureinfoformat      "text/plain"
	END
  END

  PROJECTION
 #  "proj=latlong"
   "ellps=WGS84"
   "datum=WGS84"
   "init=epsg:4326"
  END

#   Внутри MAP-объекта определяются новые объекты - слои (LAYER).
#   Обязательно нужно определить по крайней мере один слой.
#   Количество слоев ограничено сверху (по умолчанию - не больше 100 слоев),
#   если нужно большее количество слоев, придется перекомпилировать
#   MapServer (см. заголовочный файл map.h)


  LAYER # Определяем слой
    NAME         Blag_network
#    DATA         Blag_network_polyline
    TYPE         LINE
#    TEMPLATE     "dummy"
    STATUS DEFAULT
    CONNECTIONTYPE OGR
    CONNECTION "Blag_network_polyline.TAB"
    STYLEITEM "AUTO"
PROJECTION   
         "init=epsg:4326"
       END

      METADATA
               "wms_title"       "Blag_network"
               "wms_abstract"       "Blag_network layer"
         "wms_include_items"    "all"
         "wms_srs"       "EPSG:4326"
         "wms_format"             "image/png"
         "wms_extent"       "0.219579 0.147636 0.223491 0.151293"
   END
#     Внутри слоя нужно определить как минимум один класс. Классов может быть
#     несколько, но не больше 10 (иначе опять придется перекомпилировать MapServer)

    CLASS
      NAME       "Blag_network"


#       Внутри класса определяются стили: как именно данный класс отобразить
#       на карте.
#      STYLE
#        COLOR        102 252 202
#        OUTLINECOLOR 72 172 72
#      END
    END
  END # Конец определения слоя
END # Конец определения карты
Код html-страницы

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

<html>
<head>
  <title>OpenLayers BLG</title>
  <script src="apps/openlayers-2.10/OpenLayers.js"></script>
      <script type="text/javascript">
function init(){
	  
	  var bounds = new OpenLayers.Bounds (0.219579, 0.147636, 0.223491, 0.151293);
        var map = new OpenLayers.Map('map',{
    maxExtent: new OpenLayers.Bounds(0.21757899999961,0.147636,0.223491,0.151293),
    maxResolution: 156543,
    units: 'degrees',
    projection: "EPSG:4326"});
	  
        var wms2 = new OpenLayers.Layer.WMS( "OpenLayers MapServer", "http://localhost/cgi-bin/mapserv.exe?map=/ms4w/apps/netw2/olblgnet1.map",{layers: 'Blag_network'});
        map.addLayer(wms2);
	  map.addControl(new OpenLayers.Control.LayerSwitcher());
	  map.zoomToMaxExtent();
}
	</script>
</head>
    <body onload="init()">
      <div style="width:100%; height:100%" id="map"></div>    
</body>
</html>

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

Re: OpenLayers: начало работы

Сообщение Mavka » 12 дек 2011, 13:40

Попробуйте изменить объявление проекции:

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

projection: new OpenLayers.Projection('EPSG:4326') 
И временно убрать maxResolution.
лангольеры под окном жрали время ом-ном-ном

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 13 дек 2011, 02:17

С проекцией всё нормально. Поставил maxResolution: 1 - считай убрал =). Теперь отображается. Спасибо. У меня ещё будут вопросы, так что я напишу ))).

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 13 мар 2012, 10:43

По поводу пункта Выбора произвольного объекта и получения атрибутивной информации о нем.
Как осуществить выбор какого-либо объекта на карте щелчком мыши? Я так понимаю нужна связь с БД координат? Или возможен просто выбор?

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

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 14 мар 2012, 06:03

Если слой векторный то атрибутику можно брать из самого объекта, если растровый - через WMSGetFeatureInfo. Способов на самом деле очень много, нужно смотреть в каком формате у вас данные и что именно вы хотите получить на выходе.
Spatial is now, more than ever, just another column- The Geometry Column.

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 14 мар 2012, 09:01

Создал в mapinfo простые линии.
В строку браузера ввожу следующее:
файлы в архиве

что можете подсказать?
Вложения
netw2.rar
(3.03 КБ) 498 скачиваний

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

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 14 мар 2012, 09:43

В чем вопрос то, что хотите получить, что не получается?
Spatial is now, more than ever, just another column- The Geometry Column.

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 19 мар 2012, 03:37

Надо как в этом примере.

Я его попытался сделать на локальном сервере, но выделение не работает.

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

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 19 мар 2012, 04:36

В предыдущем посте вы приводили конфиг для MapServer, а этот пример сделан на базе GeoServer. Может в этом проблема?
Spatial is now, more than ever, just another column- The Geometry Column.

native
Интересующийся
Сообщения: 26
Зарегистрирован: 09 ноя 2011, 14:02
Репутация: 0

Re: OpenLayers: начало работы

Сообщение native » 19 мар 2012, 05:42

=) Наверное. Так можно ли такое организовать с помощью MapServer и OL? Если да то как, что почитать? Где посмотреть?

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

Re: OpenLayers: начало работы

Сообщение Denis Rykov » 19 мар 2012, 05:54

Такое - это какое - подсветку объекта по клику? или что вы хотите? сформулируйте задачу четко.
Spatial is now, more than ever, just another column- The Geometry Column.

Ответить

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 15 гостей