Как отображать Камчатку без разрыва в ESPG:900913 ?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
nextstopsun
Участник
Сообщения: 82
Зарегистрирован: 04 май 2010, 17:12
Репутация: 50
Откуда: Москва

Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение nextstopsun » 06 авг 2010, 19:16

Товарищи, подскажите пожалуйста, как сделать так, чтобы не отваливалась Камчатка?

При наложении в OpenLayers слоя с административными единицами России из WMS сервиса, опубликованного GeoServer-ом в системе координат EPSG:900913 на слой Google Maps, Камчатка отрывается от основной территории и отображается на своем месте, но на "соседней" карте мира.

Кто знает, как решается эта проблема?

Когда накладываю там же слой Yandex-карт, Камчатка у них не отваливается. Видимо они как-то это решили.

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

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Mavka » 07 авг 2010, 14:34

wrapDateLine спасет отца русских веб-карт (жаль что с WFS работает не очень корректно):

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

lay_lines = new OpenLayers.Layer.WMS('administry',
    url,
    {layers: 'ваш_слой', transparent: true},
    {wrapDateLine: true}
); 
лангольеры под окном жрали время ом-ном-ном

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Ivor » 09 авг 2010, 10:39

У меня смежный вопрос:
Требуется отображать только Дальний Восток, с Чукоткой.
Как я понимаю, должны использоваться wrapDateLine и restrictedExtent.
Но вот это

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

 
      var map, layer;
      var extent;
      function init() {
        OpenLayers.ImgPath = "<xsl:value-of select="/root/gui/url"/>/images/OpenLayers/";
        extent = new OpenLayers.Bounds(105.5, 42.3, -170, 77);
        map = new OpenLayers.Map('vis-map', {'tileSize': new OpenLayers.Size(512,512)});
        layer = new OpenLayers.Layer.WMS("NASA Global Mosaic",
                                         "http://wms.jpl.nasa.gov/wms.cgi",
                                         {
                                           layers: "global_mosaic"
                                         },
                                         {
                                           wrapDateLine: true
                                         } 
                                        );

        map.addLayer(layer);
        map.zoomToExtent(extent);
        map.setOptions({restrictedExtent: extent});   
        map.addControl(new OpenLayers.Control.LayerSwitcher());

выкидывает меня на середину Атлантики

Ставить на востоке 190 - во-первых коряво, а во-вторых при нажатии на область в западном полушарии тут же перекидывает к восточному краю.

Как правильно сделать?

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

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Mavka » 09 авг 2010, 12:13

Поставить карту на место можно так:

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

map.setCenter(new OpenLayers.LonLat(180, 17.5), 5); 
А вот назначить рестрикт, видимо, не получится.
лангольеры под окном жрали время ом-ном-ном

Ivor
Завсегдатай
Сообщения: 345
Зарегистрирован: 11 дек 2006, 09:46
Репутация: 102
Откуда: Иркутск

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Ivor » 09 авг 2010, 12:33

Это для показать, оно и так худо-бедно работает. Мне же требуется ограничить рабочую область, но чтобы внутри pan/zoom работал.

P.S. Да, похоже придётся исходники OpenLayers править...

Аватара пользователя
nextstopsun
Участник
Сообщения: 82
Зарегистрирован: 04 май 2010, 17:12
Репутация: 50
Откуда: Москва

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение nextstopsun » 09 авг 2010, 14:35

Mavka писал(а):wrapDateLine спасет отца русских веб-карт (жаль что с WFS работает не очень корректно):
А в чем заключается некорректность?

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

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Mavka » 09 авг 2010, 14:42

Вот здесь хорошо сказано. Кратко - рисует объекты или слева или справа от dateline, и только иногда (парад планет, кавитации орбиты Луны) одновременно. Что то там с bounds'ами не доработано. В интернетах предлагают вручную дорисовывать объекты.
лангольеры под окном жрали время ом-ном-ном

Tink
Участник
Сообщения: 50
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 4

Re: Как отображать Камчатку без разрыва в ESPG:900913 ?

Сообщение Tink » 16 сен 2014, 14:01

Здравствуйте!
Столкнулся с аналогичной проблемой - объекты WFS отображаются только с одной стороны от dateline.
OpenLayers у меня 2.12 Release, и проблема так и не была решена (в OL3 даже не проверял - нужна поддержка IE7).
Кто-нибудь обходил проблему со 180 меридианом ?

Ответить

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

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

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