FK JavaScript之:ArcGIS JavaScript添加Graphic,地圖界面卻不顯示


使用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參數如下

 

菜鳥忙着干活,只描述錯誤,記錄解決方法,不分析原因

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM