使用ArcGIS JavaScript,往地圖中添加幾個Graphic,基本是與官網示例代碼一致.繪制的圖形一閃而過之后,就沒了
核心代碼如下:
iniToolBar: function () { ttb = new Draw(map); //ttb.on("draw-end", addGraphic); //綁定不上 ttb.onDrawEnd = addGraphic; map.disableMapNavigation(); ttb.activate(this.tooltype.toLowerCase()); var TempGraphicsLayer; if ((TempGraphicsLayer=map.getLayer("tmpGrpBoundary")) == null) { TempGraphicsLayer = new GraphicsLayer({ opacity: 0.95, id: "tmpGrpBoundary" }); map.addLayer(TempGraphicsLayer); } function addGraphic(evt) { console.log("開始繪圖"); //增加Graphic至地圖 ttb.deactivate(); map.enableMapNavigation(); //使用相應的符號 var symbl; if (this.symbolType == "") { // lineSymbol used for freehand polyline, polyline and line. var lineSymbol = new CartographicLineSymbol( CartographicLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 10, CartographicLineSymbol.CAP_ROUND, CartographicLineSymbol.JOIN_MITER, 5 ); } else if (this.symbolType == "boundary") { symbl = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2), new Color(255, 255, 0, 0.25)); } else { //symbl = new SimpleFillSymbol(SimpleFillSymbol.STYLE_SOLID, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0]), 2), new Color(255, 255, 0, 0.95)); var symbl = new PictureFillSymbol( "img/error.png", new SimpleLineSymbol( SimpleLineSymbol.STYLE_SOLID, new Color('#000'), 1 ), 42, 42 ); } TempGraphicsLayer.add(new Graphic(evt.geometry, symbl)); //更新前端經緯度 } }
經過仔細排查,發現添加的Graphic的Geometry屬性為undefined,進一步排查為evt無geometry屬性
//ttb.on("draw-end", addGraphic); //綁定不上 ttb.onDrawEnd = addGraphic;
原因在此代碼處.最初調試的時候,使用上面的代碼,事件綁定一直不成功,所以就使用了下面的代碼綁定事件
下面的代碼綁定的,可正常執行,只是沒有圖形.經過排查,發現兩個綁定方式,evt事件的參數存在不同
使用on綁定后,evt參數如下
菜鳥忙着干活,只描述錯誤,記錄解決方法,不分析原因