TLDR:「track」というレイヤーを持つOpenlayersマップがあり、トラックを削除してトラックを追加し直したいと思います。または、1セットの座標と見出しに基づいて三角形をプロットする方法を理解します(以下を参照)。
設定されている方向に負荷がかかると回転するレイヤーに画像「imageFeature」があります。'tracking'というレイヤーの'styleMap'に設定されているこの回転を更新したいと思います。
- var'stylemap'を設定して、外部画像と回転を適用します。
- 'imageFeature'は、指定された座標でレイヤーに追加されます。
- 'imageFeature'が削除されました。
- 'imageFeature'が新しい場所に再び追加されます。回転は適用されません。
「styleMap」はレイヤーに適用されるため、「imageFeature」だけでなく、レイヤーを削除して再度追加する必要があると思います。
レイヤー:
var tracking = new OpenLayers.Layer.GML("Tracking", "coordinates.json", {
format: OpenLayers.Format.GeoJSON,
styleMap: styleMap
});
styleMap:
var styleMap = new OpenLayers.StyleMap({
fillOpacity: 1,
pointRadius: 10,
rotation: heading,
});
これで、時限関数にラップされましたimageFeature:
map.layers[3].addFeatures(new OpenLayers.Feature.Vector(
new OpenLayers.Geometry.Point(longitude, latitude), {
rotation: heading,
type: parseInt(Math.random() * 3)
}
));
タイプは、3つの画像のうちの1つを検索することを指します。:
styleMap.addUniqueValueRules("default", "type", lookup);
var lookup = {
0: {
externalGraphic: "Image1.png",
rotation: heading
},
1: {
externalGraphic: "Image2.png",
rotation: heading
},
2: {
externalGraphic: "Image3.png",
rotation: heading
}
}
'redraw()'関数を試しましたが、 「追跡が未定義」または「map.layers[2]」が未定義であることが返されます。
tracking.redraw(true);
map.layers[2].redraw(true);
見出しは変数です: JSONフィードから。
var heading = 13.542;
しかし、これまでのところ何も機能させることができず、ロード時に画像を回転させるだけです。ただし、画像は座標で移動します。
では、再描画機能で何が間違っているのでしょうか、またはこの画像をライブで回転させるにはどうすればよいですか?
前もって感謝します
-尾崎
追加:私はなんとか得ることができました
map.layers[2].redraw(true);
レイヤー2を正常に再描画します。ただし、回転は更新されません。スタイルマップが更新されているので考えています。しかし、それはn秒ごとにスタイルマップを実行しますが、回転の更新はなく、firebugに時計を置くと、見出しの変数が正しく更新されます。
ポイントとラインストリングの配列で三角形を描く場合。三角形を見出しに向けてどのように向きますか。私は1ポイントのLon/latと見出しを持っています。
var points = new Array(
new OpenLayers.Geometry.Point(lon1, lat1),
new OpenLayers.Geometry.Point(lon2, lat2),
new OpenLayers.Geometry.Point(lon3, lat3)
);
var line = new OpenLayers.Geometry.LineString(points);
この問題を解決する方法を探しています画像または線誰もが100repの報奨金を追加する方法を知っています私は本当にこれで立ち往生しています。
//From getJSON request//
var heading = data.RawHeading;
imageFeatureの追加と削除