2017-02-07 6 views
0

В настоящее время я пишу реализацию, где пользователь может загрузить проект и поместить его на карту.Ошибка настройки значка Icon

Проблема в том, что функция значка зарегистрирована как субразмер фактической протяженности изображения.

Когда полное изображение показывается все хорошо:
https://s24.postimg.org/lj3xmgsj9/image.png

Когда я перемещать карту влево, изображение исчезает, как только тай-истребитель начинает покидать вид:
https://s23.postimg.org/4p2tu0c5n/image.png

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

Следующий URL показывает рабочий реализация OL2:
http://gis.ibbeck.de/ginfo/apps/OLExamples/OL27/examples/ExternalGraphicOverlay/ExternalGraphicOverlay.asp
Здесь все прекрасно работает.

Это ошибка в OL3 или я что-то не так?
Переход на OL2 не является вариантом, так как у нас уже есть много кода OL3. был использован

Следующий код:
(перетащить, поворот, масштаб был удален, чтобы сделать рабочий пример минимального)

var map = new ol.Map({ 
 
     layers: [ 
 
      new ol.layer.Tile({ 
 
       source: new ol.source.OSM() 
 
      }), 
 
      new ol.layer.Vector({ 
 
       source: new ol.source.Vector({ 
 
        features: [ 
 
         new ol.Feature(new ol.geom.Point([1389519.3624186157, 7496787.364362017])) 
 
        ] 
 
       }), 
 
       style: new ol.style.Style({ 
 
        image: new ol.style.Icon({ 
 
         src: 'https://lumiere-a.akamaihd.net/v1/images/millennium-falcon-4_9c006047.jpeg', 
 
         scale: 0.75 
 
        }) 
 
       }) 
 
      }) 
 
     ], 
 
     target: 'map', 
 
     view: new ol.View({ 
 
      center: [1389519.3624186157, 7496787.364362017], 
 
      zoom: 18 
 
     }) 
 
    });
<!DOCTYPE html> 
 
<html> 
 
<head> 
 
    <title>test</title> 
 
    <script src="https://openlayers.org/en/v3.20.1/build/ol.js"></script> 
 
</head> 
 
<body> 
 
<div id="map" class="map"></div> 
 
</body> 
 
</html>

ответ

0

Если у вас есть большие иконки, вам придется установить renderBuffer свойство ol.layer.Vector (по умолчанию: 100 пикселей), так что OpenLayers включает эту функцию, даже если фактическая геометрия находится за пределами видимости.

new ol.layer.Vector({ 
    renderBuffer: 600, 
    ... 
}) 

https://jsfiddle.net/nptq3hjy/