Иногда не отображаются иконки

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
billybon
Новоприбывший
Сообщения: 4
Зарегистрирован: 09 янв 2013, 15:59
Репутация: 0

Иногда не отображаются иконки

Сообщение billybon »

Добрый день.

Есть OSM карта, поверх ее отрисовывается слой WMS слой, который отображает какие-то иконки. При перемещении карты влево иконки пропадают, если сдвинуть обратно, они снова появляются. В sld-ке прописано отображение иконки.

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

      <sld:PointSymbolizer>
        <sld:Graphic>
          <sld:ExternalGraphic>
            <sld:OnlineResource xlink:type="simple"
              xlink:href="./aaa.png" />
            <sld:Format>image/gif</sld:Format>
          </sld:ExternalGraphic>
          <sld:Size>24</sld:Size>
        </sld:Graphic>
      </sld:PointSymbolizer>
Но если прописать так:

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

      <sld:PointSymbolizer>
        <sld:Geometry>
          <ogc:Function name="vertices">
            <ogc:PropertyName>the_geom</ogc:PropertyName>
          </ogc:Function>
        </sld:Geometry>
        <sld:Graphic>
          <sld:ExternalGraphic>
            <sld:OnlineResource xlink:type="simple"
              xlink:href="./aaa.png" />
            <sld:Format>image/gif</sld:Format>
          </sld:ExternalGraphic>
          <sld:Size>24</sld:Size>
        </sld:Graphic>
      </sld:PointSymbolizer>
то все иконки работают нормально вне зависимости от их расположения.

Может ли кто-нить прояснить что такое

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

        <sld:Geometry>
          <ogc:Function name="vertices">
            <ogc:PropertyName>the_geom</ogc:PropertyName>
          </ogc:Function>
        </sld:Geometry>
Нашел доки по sld:Geometry, но что-то я не понял, как это работает.

Заранее благодарен.
billybon
Новоприбывший
Сообщения: 4
Зарегистрирован: 09 янв 2013, 15:59
Репутация: 0

Re: Иногда не отображаются иконки

Сообщение billybon »

Понял единственную вещь, что PointSymbolizer не отображается по причине того, что BBOX возвращается не правильный

В дебагере
map.getExtent().toBBOX() = "2692679.723564,7900691.504996,21477843.792314,11921890.688463"

а параметрах WMS урла
BBOX = -42078627.973623,6895391.709129,-13900881.870499,12927190.48433

OSM создается так:

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

new OpenLayers.Layer.OSM(LAYER_NAME, null,
    				{
    					'sphericalMercator': true
    				}
    		);
а WMS вот так:

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

    nodesLayer = new OpenLayers.Layer.WMS("Nodes Layer", wmsImgUrl, {
        srs: "EPSG:900913",
        noMagic: true,
        format: 'image/jpeg',
        format_options: 'antialias:none',
        transparent: true,
        tiled: true,
        tilesorigin: [map.maxExtent.left, map.maxExtent.bottom],
    }, {
    	singleTile: true,
    	displayOutsideMaxExtent : true,
        transitionEffect: "resize",
        tileOptions: {maxGetUrlLength: 2048}
    });
Как сделать так, чтобы при сдвиге карты передовался правильный bbox?
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Иногда не отображаются иконки

Сообщение Denis Rykov »

Для чего tilesorigin? Параметры format: 'image/jpeg' и transparent: true вообще противоречат друг другу.
Spatial is now, more than ever, just another column- The Geometry Column.
billybon
Новоприбывший
Сообщения: 4
Зарегистрирован: 09 янв 2013, 15:59
Репутация: 0

Re: Иногда не отображаются иконки

Сообщение billybon »

Denis Rykov писал(а):Для чего tilesorigin? Параметры format: 'image/jpeg' и transparent: true вообще противоречат друг другу.
На данный момент еще не разобрался, но, если вместо transparent: true проставить false, тогда WMS слой будет не прозрачный и, соответственно, карту мы не увидим. И самое интересное если после PointSymbolizer написать

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

      <sld:TextSymbolizer>
        <sld:Label>
          a
        </sld:Label>
      </sld:TextSymbolizer>
то все буква "а" всегда нормально отображается, а вот иконка пропадает. :(
Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Иногда не отображаются иконки

Сообщение Denis Rykov »

billybon писал(а):если вместо transparent: true проставить false, тогда WMS слой будет не прозрачный
Это понятно, я вам написал про то, что format: 'image/jpeg' - лишнее, jpeg не понимает прозрачности, в вашем случае при указании transparent: true данные автоматом запрашиваются в формате png.
Spatial is now, more than ever, just another column- The Geometry Column.
billybon
Новоприбывший
Сообщения: 4
Зарегистрирован: 09 янв 2013, 15:59
Репутация: 0

Re: Иногда не отображаются иконки

Сообщение billybon »

Беда была в том, что BBOX передавался неправильный. Хотя странно, что при этом подписи рисовались правильно.
Решение с BBOX-ом: Я для OSM layer-а проставил wrapDateLine: false. Теперь иконки отображаются нормально. Но появилась другая проблема. Т.к. мой map.maxExtent (new OpenLayers.Bounds(-18770000,-20037508.34,21480982,20037508.34)) превышает dateLine, то у меня часть карты после dateline не отображается(т.е. белая полоса). В гугловском слое таких проблем нет.
OSM
OSM.png
OSM.png (86.06 КБ) 6435 просмотров
Google
Google.png
Google.png (271.56 КБ) 6435 просмотров
Ответить

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

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

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