Цель: позволить пользователю включать и выключать разные слои данных; и динамически извлекать данные для текущего экстента из базы данных при событии перемещения карты.
Это отлично работает, если вы жестко закодируете свои 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