2012-01-27 3 views
2

Я создал простой сайт с картой, где я подключаюсь к wms-серверу. Проблема в том, что карта не отображается, просто просмотр небольших изображений. Вот сайт я создал: http://dl.dropbox.com/u/2418858/index.htmlopenlayers - wms - map not loading

Вот код Я использую:

<script type="text/javascript"> 
     var map; 
     var wms; 
     var map_controls = [new OpenLayers.Control.LayerSwitcher(), 
          new OpenLayers.Control.PanZoomBar(), 
          new OpenLayers.Control.MouseToolbar(), 
          new OpenLayers.Control.KeyboardDefaults()]; 

     function init() { 
      map = new OpenLayers.Map("map", { 
       controls : map_controls 
      }); 
      wms = new OpenLayers.Layer.WMS("Satellitenbild_30m", "http://gis.lebensministerium.at/wmsgw/", { 
       layers : 'Satellitenbild_30m', 
       key : '6ae2a41178c77ccee1db7248c9f92b04', 
      }, { 
       projection : new OpenLayers.Projection('EPSG:32632'), 
       singleTile : true, 
       buffer : 0, 
       ratio : 1 
      }); 

      map.addLayer(wms); 

      map.zoomToMaxExtent(); 

     } 
    </script> 
</head> 
<body onload=init()> 
    <div id="map" style="width: 1000px; height: 1000px"></div> 
    </div> 
</body> 

Когда я использую Пространственный командир (ГИС-программу для настольных компьютеров) Я видя карту и может увеличивать и уменьшать масштаб, но когда я использую Openlayers, я не вижу карту.

Так что я сделал перехват запроса vom Spatial Commander с прокси-сервером, чтобы узнать, как этот запрос отличается от моего, отправленного с моего сайта.

Единственное различие, которое я нашел был параметр BBOX который в СК выглядит следующим образом:

BBOX=495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807 

и параметр в запросе, посланном с моей веб-страницы выглядит следующим образом:

BBOX=-351.5625,-351.5625,351.5625,351.5625 

Поэтому я изменил параметр BBOX, отправленный через мою веб-страницу вручную, и получим следующее: manual request Итак, была карта!

Теперь мои актуальные вопросы:

  • Почему is'nt карта показывает на моем сайте?
  • Почему параметр BBOX отправляется автоматически из Openlayers так далеко от значений, отправленных из пространственного командира?
  • Как я могу сделать свою работу на карте?

Спасибо!

+0

Единственная причина, по которой он не работает, заключается в том, что BBOX не является запросом в проекции, которую вы используете. Я не уверен, как это исправить. Может иметь какое-то отношение к объявлению maxExtent в инициализации карты. –

+0

Большое спасибо за ваш намек, потому что теперь я, по крайней мере, способен просматривать карту, хотя уровень масштабирования уходит, и я не могу понять правильный maxExtent ... [link] http: // dl.dropbox.com/u/2418858/index1.html – user1173933

ответ

2

установка свойстваmaxResolution на map объекте Try:

map = new OpenLayers.Map("map", { 
    controls : map_controls, 
    maxResolution: 1000 
}); 
+0

Спасибо! это сделало трюк! Сейчас отображается карта, как это предлагается. Теперь мне просто нужно выяснить, как конвертировать gps-координаты ... Еще раз спасибо! – user1173933

1

OpenLayers обрабатывает только пару выступов (Web Mercator и WGS84). Для других прогнозов вам необходимо включить библиотеку Proj4js, доступную по адресу: http://proj4js.org/

OpenLayers автоматически интегрируется с этой библиотекой, если она доступна (т. Е. Добавлена ​​на вашу веб-страницу).

Далее добавьте параметры проекции для своей проекции (прежде чем он будет использоваться в вашем коде). В этом случае EPSG: 32632

Вы можете получить почти все детали проекции из http://spatialreference.org (когда сайт доступен) в формате Proj4js:

Proj4js.defs["EPSG:32632"] = "+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"; 

http://spatialreference.org/ref/epsg/32632/proj4js/

Однако, глядя на возможности your WMS service - его также можно запросить в проекции Web Mercator - так что нет необходимости в перепрограммах:

Наконец, демонстрационная ссылка, которую вы отправили, отображает карту - по крайней мере, в FireFox. Уверены ли вы, что у вас нет ошибок JavaScript?У вас есть дополнительная запятая в этой строке:

key : '6ae2a41178c77ccee1db7248c9f92b04', 

Это часто заставляет Internet Explorer перестать показывать карту.

+0

спасибо большое! Теперь я включил Proj4js, а также сделал определение для epsg: 32632, но теперь я видел, что мой сайт отправляет запрос для EPSG31287.js, о котором я не знаю определения, поскольку spacereference.org не работает .. . Посмотрите, когда они снова ... – user1173933

+0

Итак, я включил Proj4j на свой сайт, но, к сожалению, это ничего не изменило. одна и та же проблема: карта показывает, но слишком высоко коэффициент масштабирования, и я не могу его изменить, потому что тогда карта больше не отображается ... – user1173933

+0

firebug не обнаружил ошибок скрипта, но я исправил запятую. Проблема в том, что когда я меняю проекцию на что-либо еще, карта не будет отображаться ... – user1173933

0

Проблема заключается в том, что вы не установите проекцию на объекте OpenLayers карты. В этом случае OpenLayers устанавливает прогноз по умолчанию, который является «EPSG: 4326». Затем вы также можете установить свойство maxExtent, чтобы OpenLayers знал, в какой области он должен отправлять запросы изображения. В методе init сделайте так:

map = new OpenLayers.Map("map", { 
    controls : map_controls, 
    projection: "EPSG:32632", 
    maxExtent: new OepnLayers.Bounds(495149.712089618,4954209.6147000715,1173065.9355847104,5633477.615310807)     
}); 
+0

спасибо! проблема в моем случае заключалась в том, что maxResolution не был установлен. – user1173933

Смежные вопросы