OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2011-01-28 12:24:00

Silentium
Member
Registered: 2010-12-10
Posts: 89

Как в Openlayers сделать?

Добрый день!
Есть ли у кого-нибудь код как через Openlayers отобразить карту с Mapserver (OSGeo4W)?
Собственно имеется ссылка на WMS от mapserver. Как с помощью Openlayers отобразить это в браузере.
Помогите с кодом:

....
<script src="../lib/OpenLayers.js"></script>
    <script type="text/javascript">
        var map, layer1;
        function init(){
var lon = 38;
        var lat = 5;
        var zoom = 5;
var options = {
 projection: new OpenLayers.Projection("EPSG:900913"),
 displayProjection: new OpenLayers.Projection("EPSG:4326"),
 units: "m",
 maxResolution: 156543.0339,
 maxExtent: new OpenLayers.Bounds(-20037508.34, -20037508.34, 20037508.34, 20037508.34)
                        };
            map = new OpenLayers.Map( 'map', options );
            layer1 = new OpenLayers.Layer.WMS( 
"World Map",
 "http://osm/cgi-bin/mapserv.exe?", 
{

map: 'C:/OSGeo4W/apps/maps/new.map',
transparent: 'TRUE',
layers: 'land',
type: 'png'
} );
            map.addLayer(layer1);
        // map.setCenter(new OpenLayers.LonLat(lon, lat), zoom);
         map.addControl( new OpenLayers.Control.LayerSwitcher() );   
   }
    </script>
  </head>
  <body onload="init()">
...............

Last edited by Silentium (2011-01-28 14:09:47)

Offline

#2 2011-01-28 12:33:18

Aleksandr Dezhin
Member
From: Msk
Registered: 2008-05-25
Posts: 2,109
Website

Re: Как в Openlayers сделать?

например вот http://yav.gis-lab.info/boundaries/map


[ Проверка границ и НП | Дампы | Валидатор рек | Кое-что ещё ]
- Нет! Не надо пытаться. Делай. Или не делай. Не надо пытаться. (c) Йода

Offline

#3 2011-01-28 14:09:55

sim
Member
Registered: 2008-04-19
Posts: 629
Website

Re: Как в Openlayers сделать?

Offline

#4 2011-01-28 14:15:40

Silentium
Member
Registered: 2010-12-10
Posts: 89

Re: Как в Openlayers сделать?

Aleksandr Dezhin wrote:

Я не специалист в JAvaScript, поэтому сложновато сопоставить со своим кодом.
Идея такая есть ли в OSGeo4w некий аналог, как в Geoserver, где в ОpenLAyers можно смотреть слои которые публикуются.
Через QGIS добавляю ссылку типа  http://osm/cgi-bin/mapserv.exe?MAP=C:/OSGeo4W/apps/maps/new.map&SERVICE=WMS - все работает а при попытки добавить в код Openlayers карта неотображается!

Может я не туда копаю?

Offline

#5 2011-01-28 14:32:01

Silentium
Member
Registered: 2010-12-10
Posts: 89

Re: Как в Openlayers сделать?

Пробовал настроить согласно этому, выдает ошибку maxExtent is null, т.е граница -20037508.34, -20037508.34, 20037508.34, 20037508.34 неопределяется как я понял

Offline

#6 2011-01-28 15:02:20

dkiselev
Member
Registered: 2010-02-09
Posts: 3,364

Re: Как в Openlayers сделать?

Попробуйте код из вашего первого поста, но

map: 'C:/OSGeo4W/apps/maps/new.map'

поменяйте на

'map': 'C:/OSGeo4W/apps/maps/new.map'

(кавычечки добавились)

И еще, попробуйте дебаггер на это дело натравить - посмотрите к мапсерверу вообще запросы уходят, и все ли в них верно.

Last edited by dkiselev (2011-01-28 15:02:48)


mail: dkiselev@osm.me      skype: dmitry.v.kiselev
Open Street Maps are supreme! Exterminate all map forms! Exterminate! Exterminate!

Offline

#7 2011-01-28 15:28:15

Silentium
Member
Registered: 2010-12-10
Posts: 89

Re: Как в Openlayers сделать?

dkiselev wrote:

Попробуйте код из вашего первого поста, но

map: 'C:/OSGeo4W/apps/maps/new.map'

поменяйте на

'map': 'C:/OSGeo4W/apps/maps/new.map'

(кавычечки добавились)

И еще, попробуйте дебаггер на это дело натравить - посмотрите к мапсерверу вообще запросы уходят, и все ли в них верно.

Смотрите:
1)при добавлении кавычек дебаггер показывает ошибку на них (invalid id)
2)Убрал в коде

transparent: "TRUE",

ошибки пропали, но в FFox сама карта не грузится, а в IE розовые квадратики вместо карты.

в map файле у меня описано более 10 слоев, которые строятся из бд, нужно ли мне всех их перечислять?

Offline

#8 2012-09-07 16:55:03

RusFox
Member
From: С-Пб
Registered: 2012-06-05
Posts: 469
Website

Re: Как в Openlayers сделать?

Как прикрутить прозрачный слой, который можно включать поверх основного? Сам слой есть, как его правильно подключить?

Сейчас так:

var layerBase = new OpenLayers.Layer.OSM("Base","tut-URL", {numZoomLevels: 18});
 map.addLayer(layerBase); 

var layerNatural = new OpenLayers.Layer.OSM("Natural","tut-URL", {numZoomLevels: 18, isBaseLayer: false, transparent: "true", visibility: true});
 map.addLayer(layerNatural); 

Вроде все ок, слой в переключателе есть, показывается, но при попытке прокрутить карту новые тайлы становятся красными. Если щелкнуть на "выключатель" в списке слоев - опять все хорошо становится, пока не подвигаешь карту.

UPD: со слоем все в порядке, в leaflet все хорошо отображается.

Last edited by RusFox (2012-09-07 17:03:28)


Информация для всех... Даром... И пусть никто не уйдет обиженным!
WEB-анализатор треков | Interactive map for Zabbix

Offline

#9 2012-09-10 16:45:42

RusFox
Member
From: С-Пб
Registered: 2012-06-05
Posts: 469
Website

Re: Как в Openlayers сделать?

Типа UP sad


Информация для всех... Даром... И пусть никто не уйдет обиженным!
WEB-анализатор треков | Interactive map for Zabbix

Offline

Board footer

Powered by FluxBB