2017-01-17 21 views
-2

この例の特徴をアニメーション化するpostcomposeとvectorContextを使用する方法を示しています。vectorContext.setStyleのopenlayers3:ol.style.Iconは機能しませんか?

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'を読み込めませんnull

バグですか?または、どうすればimgスタイルを使用できますか?

+0

あなたのコードに誤りはありません。すべてが適切に動作するはずです。私たちは何が起こっているかを見ることができるように生きている例を提供できますか? – Icarus

+1

これは一例です:https://jsfiddle.net/codingmiao/9gou6rwL/6/、私は53行目のスタイルを変更します(元の例はhttp://openlayers.org/en/latest/examples/feature- animation.html)、関数 "animate"は機能しません... –

答えて

0

通常のPointの代わりにイメージを追加する場合は、スタイルをアニメーション機能に変更する必要はありません。

あなたはベクトル層にこの方法を所望のスタイルを追加することができます。

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' 
     })) 
    }) 
}); 

私はvectorContextのための任意のスタイルなしであなたのjsfiddleを編集しました。 Openlayers Siteの例のようにアニメーションを取得したい場合は、jsfiddleコードのコメントを外して古いスタイルを追加するだけです。

+0

ありがとう、私はアニメーションをしたい:このような線に沿って移動する赤い点:https://jsfiddle.net/codingmiao/9gou6rwL/赤い点をイメージスタイルに置き換えますが、私は失敗しました。 –

+0

あなたが望むものはあなたの質問に明示的に記述されていませんでした。だから皆があなたの意味を理解できるように編集することをお勧めします。あなたの質問にコメントで追加したjsfiddleの例は、かなり誤解を招くほどのものでした。しかし、ここでは、アニメーション内のカスタムアイコンを使ってポイントの例を見つけることができます:https://jsfiddle.net/m0wj9mL2/1/ – Icarus

+0

なぜそれが動作しないのか分かりました:ol.style.Iconは、 vectorContext.drawFeature "ではなく、他の場所ではレンダリングの前に位置しています。 たとえば、あなたの例の69行目を「features:[routeFeature1]」に変更すると、それは機能しません –

関連する問題