Openlayer смена base layer

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
iErroRi
Интересующийся
Сообщения: 27
Зарегистрирован: 19 дек 2011, 09:28
Репутация: 0

Openlayer смена base layer

Сообщение iErroRi »

Здравствуйте

Есть карта города привязанная к EPSG:4326, в Openlayer загружается 3 слоя Google, кварталы, дома.
Включен контрол LayerSwitcher. Там собственно 2 Основных слоя Google, кварталы. С Google слоем все нормально, дома отображаются на своих местах. Если переключится на кварталы карта исчезает тайлы грузятся белыми.

Настройки карты для гугла:

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

        var options = {
          controls: [],
          tileSize: new OpenLayers.Size(256,256),
          maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
          maxResolution: 156543.0399,
          numZoomLevels: 19,
          units: 'm',
          projection: new OpenLayers.Projection("EPSG:4326"),
          displayProjection: new OpenLayers.Projection("EPSG:4326")
        };
Если указать:

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

maxExtent: new OpenLayers.Bounds(113.185287475586,51.9441452026367,113.642135620117,52.1663818359375),
maxResolution: 0.17578125,
Карта с кварталами отображается нормально. Если переключится на гугл то карта как бы застревает в океане рядом с Африкой.

Как сделать?) При переключении слоев пересоздать карту с новыми опциями?
Аватара пользователя
Aleksandr Dezhin
Активный участник
Сообщения: 244
Зарегистрирован: 03 фев 2010, 10:47
Репутация: 14
Откуда: Москва

Re: Openlayer смена base layer

Сообщение Aleksandr Dezhin »

Вам нужно перепроецировать ваши кварталы и дома в EPSG:900913, т.к. именно в этой проекции работает google maps. То есть тайлы гугл отдает только в одной проекции.

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

          maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34),
          ..
          projection: new OpenLayers.Projection("EPSG:4326"),
Также maxExtent и projection так же должны соответствовать друг другу. Сейчас же у вас что-то странное, maxExtent скорее всего в EPSG:900913, а projection EPSG:4326
iErroRi
Интересующийся
Сообщения: 27
Зарегистрирован: 19 дек 2011, 09:28
Репутация: 0

Re: Openlayer смена base layer

Сообщение iErroRi »

Спасибо :)

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

          projection: new OpenLayers.Projection("EPSG:900913"),
          displayProjection: new OpenLayers.Projection("EPSG:900913")
Помогло.
Ответить

Вернуться в «Веб-картография»

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

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