2016-09-13 52 views
1

ローテーション属性を持つ機能を持つベクターレイヤーがあります。OpenLayers 3の地図回転中に回転する機能

:回転は属性+マップの回転角度に基づいて定義されて

var style_outer = new ol.style.Style({ 
image: new ol.style.Icon(/** @type {olx.style.IconOptions} */ ({ 
    anchor: [0.5, 0.5], 
    anchorXUnits: 'fraction', 
    anchorYUnits: 'fraction', 
    src: './images/Feature_icons/Logo_Arrow_07.png', 
    rotation: rotation, 
    scale: photo_icon_resolution_function() 
    })) 
}); 

は、次のようになります。次のように私は、Styleプロパティで機能アイコンの方向を定義するために回転属性を使用しています

var map_rotation = map.getView().getRotation(); 
var rotation = feature.get(bearing) + map_rotation; 

ユーザーが地図を回転すると、アイコンはリアルタイムで一致するように回転しません。ユーザーが地図を移動するか、回転後にマップとやり取りするときに、正しい角度にスナップします。これは、これらのことが起こったときにだけスタイル関数が呼び出されるので意味があります。

私の質問は、ユーザーが地図を回転すると同時にアイコンを回転させるにはどうすればいいですか?

私は次のように回転イベントをキャッチしようとしている

map.getView().on('propertychange', function(e) 
    { 
     loaded_layers[p].getSource().forEachFeature(function(feature){ 
     feature.setStyle(Photo_Style(feature)); 
     feature.changed(); //This is an alternative which also works 
    }); 

}); 

これは、それが回転中に発射することで動作しますが、それはまだ、ユーザーが回転を停止した後にのみ、回転処理中にアイコンを更新しません。 (これは確かに、ユーザーが更新を得るためにマップをパンする必要があることの改善ですが、まだ私が探しているものではありません)。

答えて

2

rotateWithView: trueol.style.Iconに使用してください。

+0

私は2時間前にそれを知って欲しいと思っています;) –

関連する問題