ESRI javascript featureLayer.graphics

时间:2016-03-09 21:21:35

标签: arcgis esri

我正在使用FeatureLayer.Mode_ONDEMAND的地图上工作。要查看某个图层,我使用featureLayer.setDefinitionExpression传递项目ID。在这样的层存在的地方,我看到了。我想知道的是如何检测何时不存在图层。我想向观众打印警报,而不是仅显示空白地图。这是我的代码:

function init() {
  map = new esri.Map("mapDiv", {
   basemap: "topo",
   zoom: 9
  });

  var featureLayer = new esri.layers.FeatureLayer("http://services.arcgis.com/v01g34asdwfAi/arcgis/rest/services/Projects/FeatureServer/0",{
   mode: esri.layers.FeatureLayer.MODE_ONDEMAND,
   outFields: ["*"],
   opacity: 1
  });


  featureLayer.setDefinitionExpression("SrvyDescID=\'' . htmlspecialchars($ProjectID) . '\'");
  console.log(featureLayer.graphics);
  console.log(featureLayer.graphics[0]);
  map.addLayer(featureLayer);
   }

我学到的是当项目有效时,feature.graphics将返回一个数组。但我无法像对待数组那样对待它。例如:

console.log(featureLayer.graphics)返回一个数组对象 但 console.log(featureLayer.graphics [0])返回“undefined”。

featureLayer.graphic.length也不起作用。如何使用此数组对象让我知道地图上会显示一个图层?

附件是控制台日志的屏幕截图。谢谢你的帮助。

Console.log

1 个答案:

答案 0 :(得分:0)

我需要抓住" update-end"事件。最终代码:

class Base_C{
public:
  boost::shared_ptr<Base_B> barB;

  Base_C(){};
  virtual ~Base_C(){};

  // other pure virtual functions...
};

class Derived_C :public Base_C{
public:
  boost::shared_ptr<Base_B> barC;

  Derived_C(boost::shared_ptr<Base_B> _barC);
  ~Derived_C(){};
  // declaration of the pure virtual functions...
};