zoukankan      html  css  js  c++  java
  • 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参数如下

    菜鸟忙着干活,只描述错误,记录解决方法,不分析原因

  • 相关阅读:
    SDN 实验室学生们
    面向对象程序设计
    软件工程实践
    走出舒适圈的信念和勇气——“Learning by doing!” 我的软工2020春季教学总结
    第二次作业(2)
    结对编程第一战——“停课不停学”数据可视化的数据采集
    团队作业第四次—项目系统设计与数据库设计
    团队作业第一次—团队展示
    软件工程实践2019第五次作业——结对编程的编程实现
    软件工程实践2019——idea表述及组队
  • 原文地址:https://www.cnblogs.com/DayDreamEveryWhere/p/5523993.html
Copyright © 2011-2022 走看看