• 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参数如下

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

  • 相关阅读:
    深入A标签点击触发事件而不跳转的详解
    js、css、html判断浏览器的各种版本
    深入理解this对象
    背景透明文字不透明的最佳方法兼容IE(以背景黑色透明度0.5为例)
    解决ie6支持最大高度最小高度的方法
    js点击更多显示更多内容效果
    artdialog关闭弹出窗口
    (巧用)事件代理
    CSS3盒模型display:-webkit-box;的使用
    文件上传input type="file"样式美化
  • 原文地址:https://www.cnblogs.com/DayDreamEveryWhere/p/5523993.html
Copyright © 2020-2023  润新知