目標:ユーザーがデータのさまざまなレイヤーをオンまたはオフにできるようにします。マップ移動イベントでデータベースから現在のエクステントのデータを動的にプルします。
ここで行うようにVEShapeLayersをハードコーディングすると、これは問題なく機能します。
レイヤーのリストはデータベースから取得されています。VEShapeLayerに図形を追加してもマップにレンダリングされないことを除いて、すべてが希望どおりに機能しています。VEShapeLayer.GetShapeCount()を呼び出すと、期待される数が返されるため、レイヤーにデータが含まれます。
コードの重要な部分は次のとおりです。
var assets = [];
if (WebServiceResult.length > 0) {
for (var i = 0; i < WebServiceResult.length; i++) {
var ix = FindLayerIndex(WebServiceResult[0].AssetMapLayer);
var velatlong = new VELatLong();
velatlong.Latitude = WebServiceResult[i].Latitude;
velatlong.Longitude = WebServiceResult[i].Longitude;
newShape = new VEShape(VEShapeType.Pushpin, velatlong);
assets.push(newShape);
}
// ix is defined above and is vaild and correct
map.GetShapeLayerByIndex(ix).AddShape(assets);
}
// a call here to map.GetShapeLayerByIndex(ix).GetShapeCount()
// returns the expected number of shapes