2016-10-25 4 views
2

Я пытаюсь наметить функции векторной точки плитки, но они всегда обрезаются на границе плитки. Я пробовал (среди многих других) использование опции renderBuffer без успеха. Я использую OL 3.19, а векторные плитки подаются с Geoserver 2.10RC1, и я получаю те же ошибки в моей производственной среде, а также редактирую пример Boundless (http://suite.opengeo.org/docs/latest/dataadmin/vectortiles/index.html).OL3/Geoserver: метки векторной плитки обрезаны

Я думаю, что плитки правильно поданы с Geoserver и что Openlayers каким-то образом визуализируют, а затем разрезают плитки перед представлением, но я как бы застрял на этом.

Любые идеи?

Screenshot of the way it looks

И фрагмент кода:

<script> 
 
    var style_simple = new ol.style.Style({ 
 
    fill: new ol.style.Fill({ 
 
     color: '#ADD8E6' 
 
    }), 
 
    stroke: new ol.style.Stroke({ 
 
     color: '#880000', 
 
     width: 1 
 
    }), 
 
\t text: new ol.style.Text({ 
 
\t text:'LOREMIPSUM'}) 
 
    }); 
 

 
    function simpleStyle(feature) { 
 
    return style_simple; 
 
    } 
 
    
 
    var map = new ol.Map({ 
 
    target: 'map', 
 
    view: new ol.View({ 
 
\t \t center: [0,0], 
 
\t \t zoom: 4 
 
    }), 
 
    layers: [new ol.layer.VectorTile({ 
 
\t renderBuffer:50, //doesn't matter 
 
     style:simpleStyle, 
 
     source: new ol.source.VectorTile({ 
 
     tilePixelRatio: 1, 
 
     tileGrid: ol.tilegrid.createXYZ({maxZoom: 19}), 
 
     format: new ol.format.MVT(), 
 
     url: 'http://localhost:8080/geoserver/gwc/service/tms/1.0.0/[email protected]%[email protected]/{z}/{x}/{-y}.pbf' 
 
     }) 
 
    })] 
 
    }); 
 
    </script>

+0

Опция 'renderBuffer' не поможет. Как и в приведенном ниже ответе, ваши плитки должны повторять метки на соседних плитках. – ahocevar

ответ

2

У меня такая же проблема с ol.layer.VectorTile и текстовых меток.
Все метки нарезаны на границах плитки.

enter image description here
Полный пример: https://jsfiddle.net/rn3qc4ca/

Я попросил разработчиков OpenLayers за помощью: https://github.com/openlayers/ol3/issues/6275
-> Это не ошибка в OpenLayers. Плиты картонных ящиков действительно повторяют метки в соседних плитках. Если вы используете очень большие шрифты, метка все равно будет обрезана.


My (невыполненным) Идея заключается в том, чтобы поместить все метки в отдельный ol.layer.Vector слой. Поскольку этот тип слоя не нарезается на плитки, он всегда печатается полностью.

+0

Это действительно странно, поскольку в примере OL3 (http://openlayers.org/en/latest/examples/mapbox-vector-tiles-advanced.html) эти ярлыки выглядят великолепно. – JohnnyBrattom

+0

Палитра Mapbox в этом примере повторяет метки соседних плит. Вот почему они отлично смотрятся там. – ahocevar