目标:允许用户打开和关闭不同层的数据;并在地图移动事件中从数据库中动态提取当前范围的数据。
如果您按照此处完成的方式对 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