2017-01-17 3 views
-2

Этот пример показывает, как использовать postcompose и vectorContext анимировать особенности:openlayers3: ol.style.Icon в vectorContext.setStyle не может работать?

http://openlayers.org/en/latest/examples/feature-animation.html

Я пытаюсь заменить стиль в этих строках:

var style = new ol.style.Style({ 
    image: new ol.style.Circle({ 
     radius: radius, 
     snapToPixel: false, 
     stroke: new ol.style.Stroke({ 
      color: 'rgba(255, 0, 0, ' + opacity + ')', 
      width: 0.25 + opacity 
     }) 
    }) 
}); 

vectorContext.setStyle(style); 

, когда я заменить стиль к стилю IMG , например:

var style = new ol.style.Style({ 
    image: new ol.style.Icon(({ 
     src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png' 
    })) 
}); 

не работает и выбрасывает ошибку: не удается прочитать свойство '0' of null

Это ошибка? Или как я могу использовать стиль img?

+0

В вашем коде не найдено ошибок; все должно работать должным образом. Можете ли вы представить живой пример, чтобы мы могли видеть, что происходит? – Icarus

+1

это пример: https://jsfiddle.net/codingmiao/9gou6rwL/6/, я просто изменяю стиль в строке 53 (исходный пример: http://openlayers.org/en/latest/examples/feature- animation.html), функция «оживить» не может работать ... –

ответ

0

Если вы хотите добавить изображение вместо обычной точки, вам не нужно менять стиль на функцию анимации.

Вы можете добавить нужный стиль в векторный слой таким образом:

var vector = new ol.layer.Vector({ 
    source: source, 
    style: new ol.style.Style({ 
     image: new ol.style.Icon(({ 
      src: 'https://openlayers.org/en/v3.20.1/examples/data/icon.png' 
     })) 
    }) 
}); 

Я отредактировали jsfiddle без стиля для vectorContext. Если вы хотите получить некоторую анимацию, например, на примере сайта Openlayers, вам нужно добавить старый стиль, раскомментируя его в коде jsfiddle.

+0

Спасибо, я хочу сделать анимацию: красная точка перемещается вдоль линии, например: https://jsfiddle.net/codingmiao/9gou6rwL/ 9 /, и замените красную точку на стиль изображения, но я потерпел неудачу .. –

+0

То, что вы хотели, не было явно описано в вашем вопросе, поэтому я рекомендую вам отредактировать его, чтобы каждый мог понять, что вы имеете в виду. Пример jsfiddle, который вы добавили в комментарий к вашему вопросу, также довольно вводил в заблуждение. Однако здесь вы можете найти пример точки с пользовательским значком в анимации: https://jsfiddle.net/m0wj9mL2/1/ – Icarus

+0

Я выяснил, почему это не работает: ol.style.Icon используется непосредственно в разделе " vectorContext.drawFeature ", но не в других местах опережает рендеринг. Например, чтобы изменить строку 69 вашего примера на «features: [routeFeature1]», это не сработает –