Целта: Позволете на потребителя да включва и изключва различни слоеве от данни; и за динамично изтегляне на данните за текущия екстент от база данни при събитие за преместване на картата.
Това работи добре и добре, ако твърдо кодирате своите 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