精华内容
下载资源
问答
  • GIS地图标绘

    2014-05-23 09:17:37
    GIS地图标绘、falsh里的标绘、但是撤销还不成功、
  • 开源openlayer地图标绘

    2021-04-20 08:59:14
    分享开源的openlayer的地图标绘功能,包含军事标绘,支持openlayers5; github开源地址:https://github.com/sakitam-fdd/ol-plot; 基于web墨卡托坐标系的地图,修改源代码应该都能够支持。

    分享开源的openlayer的地图标绘功能,包含军事标绘,支持openlayers5;
    github开源地址:https://github.com/sakitam-fdd/ol-plot;
    基于web墨卡托坐标系的地图,修改源代码应该都能够支持。
    在这里插入图片描述

    展开全文
  • 二维地图标绘

    2017-12-15 10:21:48
    本范例简单示范了二维标绘(不通过鼠标来绘制符号)以及创建动画功能。
  • openlayers入门开发系列之地图标绘

    千次阅读 2018-11-11 17:47:00
    本篇的重点内容是利用openlayers实现地图标绘功能,效果图如下: 实现思路: 标绘界面设计以及标绘面板控制  <!-- 标绘面板 --> <div style="position:absolute;right:180px...

    本篇的重点内容是利用openlayers实现地图标绘功能,效果图如下:

    实现思路:

    • 标绘界面设计以及标绘面板控制 
    <!-- 标绘面板 -->
    <div style="position:absolute;right:180px;top:80px;display:none;" id="map_toolbar_plot">
    <ul class="map_toolbar_list_more map_toolbar_list_more-float  clearfix">
           <li plottype="freehandline">自由线<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar28"></span></li>
           <li plottype="polyline">折线<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar29"></span></li>
           <li plottype="arc">弧线<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar30"></span></li>
           <li plottype="curve">曲线<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar31"></span></li>
           <li plottype="freehandpolygon">手绘<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar32"></span></li>
           <li plottype="polygon">多边形<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar33"></span></li>
           <li plottype="rectangle">矩形<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar34"></span></li>
           <li plottype="circle">圆形<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar35"></span></li>
           <li plottype="assaultdirection">直角<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar36"></span></li>
           <li plottype="squadcombat">简单<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar37"></span></li>
           <li plottype="tailedsquadcombat">燕尾<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar38"></span></li>
           <li plottype="gatheringplace">集结地<span class="map_toolbar_list_more_icon map_toolbar_list_more_icon-toolbar39"></span></li>
    </ul>
    </div>
    //标绘例
    var plotFlag = false;
    $("#bPlot").click(function () {
                if(!plotFlag){
                    $("#map_toolbar_plot").show();
                    plotFlag = true;
                }else{
                    bmap.setCurrentMutexInteraction(null);
                    if(bmap.dataClear){
                        bmap.dataClear.clear();
                    }
                    $("#map_toolbar_plot").hide();
                    plotFlag = false;            
                }            
    });
    • 标绘初始化以及核心代码实现
    //标绘
    var plottypes = ["freehandline","polyline","arc","curve","freehandpolygon","polygon",
            "rectangle","circle","assaultdirection","squadcombat","tailedsquadcombat","gatheringplace"];
    for(var i = 0; i < plottypes.length; i++){
            var selector = '#map_toolbar_plot li[plottype="' + plottypes[i] + '"]';
            $(selector).on('click',function(){
                var id = "10006";//标绘工具
                var tool = bmap.getIndexInteraction(id);
                bmap.setCurrentMutexInteraction(tool);
                //标绘类型
                var plottype = $(this).attr("plottype");
                tool.setDrawType(plottype);
            })
    }
    /**
     *  获取带有索引的交互工具
     * @param index {String}
     * @returns {ol.interaction.Interaction|null}
     */
    bxmap.Map.prototype.getIndexInteraction = function(index){
        var indexInteractions = this.get("bxmap_index_interactions") || {};
        var interaction = indexInteractions[index];
        if(interaction == null && this.getMap()){
            var arr = this.getMap().getInteractions().getArray();
            for(var i = 0; i < arr.length ; i++){
                if(index == arr[i].get(bxmap.INDEX_INTERACTION_ID)){
                    interaction = arr[i];
                    indexInteractions[index] = interaction;
                    break;
                }
            }
        }
        return interaction;
    }
    /*----------标绘,依赖于GISpace动态标绘开源项目{bxmap.interaction.Plot}---------*/
    /**
     * @classdesc 用于绘制军事图形,依赖于依赖于GISpace动态标绘开源项目
     * @extends {ol.interaction.Interaction}
     * @param options {Object}
     * @param options.type {String} 默认为polygon
     */
    bxmap.interaction.Plot = function (options) {
        ol.interaction.Interaction.call(this, { handleEvent: this._handleKeyboardEvent });
    
        this.plotDraw = null; //绘制标绘
        this.plotEdit = null; //编辑标绘
        this.plotLayer = null; //标绘图层
        this.editingFeatures = new ol.Collection();//当前选择的要素
    
        var opt_options = options ? options : {};
        var type = opt_options.type ? opt_options.type : "polygon";
        this.setDrawType(type);
    }
    ol.inherits(bxmap.interaction.Plot, ol.interaction.Interaction);
    
    /**
     * @inheritdoc
     * @param {ol.CanvasMap} map
     */
    bxmap.interaction.Plot.prototype.setMap = function (map) {
        ol.interaction.Interaction.prototype.setMap.call(this, map);
        if (map) {
            // 初始化标绘绘制工具,添加绘制结束事件响应
            var plotDraw = this.plotDraw = new P.PlotDraw(map);
            plotDraw.on("draw_end", this._onDrawEnd, this);
            // 初始化标绘编辑工具
            var plotEdit = this.plotEdit = new P.PlotEdit(map);
    
            var plotLayer = this.plotLayer = this.getLayer();
            // 添加标绘图层
            map.addLayer(plotLayer);
    
            map.on('click', function (e) {
                if (plotDraw.isDrawing()) return;
    
                var feature = map.forEachFeatureAtPixel(e.pixel, function (feature, layer) {
                    return feature;
                },{
                    layerFilter: function (layer) {
                        return layer == plotLayer;
                    },
                    hitTolerance: 1 //1像素,仅在canvas render中有效
                });
                if (feature) {
                    this.editingFeatures.push(feature);
                    // 开始编辑
                    this._startEditingFeature(feature);
                } else {
                    // 结束编辑
                    this._finishEditing();
                }
            },this);
        }
    }
    
    /**
     * @description 设置绘制图形类型
     * @param {String} drawType 类型
     * @example <caption> 图形类型有效值 </caption>
     *     arc - 弧线,curve - 曲线,polyline - 折线,freehandline - 自由线,circle - 圆,
     *     ellipse - 椭圆,closedcurve - 曲线面,polygon - 多边形,rectangle - 矩形,
     *    freehandpolygon - 自由面,gatheringplace - 聚集地,doublearrow - 钳击双箭头,
     *  straightarrow - 直线箭头,finearrow - 细直箭头,assaultdirection - 直箭头,
     *    attackarrow - 进攻箭头,tailedattackarrow - 燕尾进攻箭头,squadcombat - 斜箭头,
     *     tailedsquadcombat - 燕尾斜箭头
     */
    bxmap.interaction.Plot.prototype.setDrawType = function(drawType){
        var map = this.getMap();
        this.setCursor("default");
        
        this.set("draw_type", drawType);
        if (this.plotEdit && this.plotDraw) {
            this._finishEditing();
            this.plotDraw.activate(drawType);
        }
    }
    
    /**
     * @description 获取绘制图形类型
     * @returns {String} 绘制图形类型
     */
    bxmap.interaction.Plot.prototype.getDrawType = function(){
        return this.get("draw_type");
    }
    
    /**
     * @private
     * @description 更新状态
     */
    bxmap.interaction.Plot.prototype._updateState = function() {
        var map = this.getMap();
        if(map == null) return;
        var active = this.getActive();
        
        var plotDraw = this.plotDraw;
        var plotEdit = this.plotEdit;
        var layer = this.plotLayer;
        //使激活
        if(active){
            this._finishEditing();
            if(plotDraw){
                var type = this.getDrawType();
                plotDraw.activate(type);
            }
        }else{
            if(plotDraw){
                plotDraw.deactivate();
            }
            this._finishEditing();
        }
    };
    
    /**
     * @description 获取标绘图层
     * @returns {ol.layer.Vector}
     */
    bxmap.interaction.Plot.prototype.getLayer = function(){
        if(this.plotLayer == null){
            // 设置标绘符号显示的默认样式
            var stroke = new ol.style.Stroke({color: '#FF0000', width: 2});
            var fill = new ol.style.Fill({color: 'rgba(0,255,0,0.4)'});
            var image = new ol.style.Circle({fill: fill, stroke: stroke, radius: 8});
            drawStyle = new ol.style.Style({image: image, fill:fill, stroke:stroke});
        
            // 绘制好的标绘符号,添加到FeatureOverlay显示。
            var layer = this.plotLayer = new ol.layer.Vector({
                source: new ol.source.Vector()
            });
            layer.setStyle(drawStyle);
            layer.setZIndex(bxmap.CONFIG_LEVEL_MAX + 1);//保持不被其他图层覆盖
        }
        return this.plotLayer;
    }
    
    /**
     * @private
     * @param mapBrowserEvent
     * @returns {Boolean}
     */
    bxmap.interaction.Plot.prototype._handleKeyboardEvent = function(mapBrowserEvent) {
        var stopEvent = false;
        var map = this.getMap();
        if(map == null) return;
        
        if (mapBrowserEvent.type == "keydown" || mapBrowserEvent.type == "keypress") {
            var keyEvent = mapBrowserEvent.originalEvent;
            var keyCode = keyEvent.keyCode;
            if (keyCode == 46) {//delete
                var plotLayer = this.plotLayer;
                  this.editingFeatures.forEach(function (elem, index, array) {
                      var close = elem.get("close_button");
                      if (close) {
                          map.removeOverlay(close);
                      }
                      var source = plotLayer.getSource();
                    source.removeFeature(elem);
                  });
                  this.plotEdit.deactivate();
                  this.editingFeatures.clear();    
                  mapBrowserEvent.preventDefault();
                  stopEvent = true;
          }
        }
        return !stopEvent;
    }
    
    /**
     * @private
     * @description 绘制结束后,添加图层显示。
     */
    bxmap.interaction.Plot.prototype._onDrawEnd = function (event) {
        var feature = event.feature;
        if (feature) {
            //添加到编辑要素集合中
            this.editingFeatures.push(feature);
            //添加到标绘图层
            this.plotLayer.getSource().addFeature(feature);
            this._bindingCloseButton(feature);
            //开始编辑
            this._startEditingFeature(feature);
        }
    }
    
    /**
     * @private
     * @description 开始编辑要素
     */
    bxmap.interaction.Plot.prototype._startEditingFeature = function (feature) {
        if (this.plotEdit == null || feature == null) return;
        this.plotEdit.activate(feature);
        var close = feature.get("close_button");
        var map = this.getMap();
        if (map && close) {
            var exists = map.getOverlayById(close.getId());
            if(exists == null){
                map.addOverlay(close);
            }
            var ctlPoints = this.plotEdit.getControlPoints();
            var point = ctlPoints[ctlPoints.length - 1];
            close.setPosition(point);
        }
    }
    
    /**
     * @private
     * @description 结束编辑要素
     */
    bxmap.interaction.Plot.prototype._finishEditing = function () {
        if (this.plotEdit) {
            this.plotEdit.deactivate();
        }
    
        //移除删除按钮
        var map = this.getMap();
        if (map == null) return;
        this.editingFeatures.forEach(function (elem, index, array) {
            var close = elem.get("close_button");
            if (map && close) {
                map.removeOverlay(close);
            }
        });
        this.editingFeatures.clear();
    }
    
    /**
     * @private
     * @description 获取删除按钮
     * @returns {ol.Overlay}
     */
    bxmap.interaction.Plot.prototype._bindingCloseButton = function (feature) {
        if (feature == null) return;
        var uid = bxmap.common.getCounterUid(feature);
        var closeTooltipElement = document.createElement('div');
        closeTooltipElement.className = 'tooltip tooltip-close';
        var closeOverlay = new ol.Overlay({
            id: uid,
            element: closeTooltipElement,
            offset: [16, 0],
            positioning: 'bottom-center'
        });
        closeTooltipElement.innerHTML = '<a style="color:red;" href:"#" title="删除">✘</a>';
        feature.set("close_button", closeOverlay);
    
        //执行删除绘制
        var plotLayer = this.plotLayer;
        var plotEdit = this.plotEdit;
        var map = this.getMap();
        closeTooltipElement.addEventListener('click', function () {
            if (plotEdit && feature && plotLayer) {
                var close = feature.get("close_button");
                if (close && map) {
                    map.removeOverlay(close);
                }
                var source = plotLayer.getSource();
                source.removeFeature(feature);
                plotEdit.deactivate();
            }
        });
    }
    
    /**
     * 清空绘制的数据
     */
    bxmap.interaction.Plot.prototype.clear = function(){
        this._finishEditing();
        if(this.plotLayer){
            this.plotLayer.getSource().clear();
        }
    }

     

    展开全文
  • Engine的可扩展地图标绘技术方法, 并实现了一个突发事件应急标绘系统。 系统消息管理模块利用C# 反射机制, 将各种菜单、 工具的消息处理类进行配置组装; 绘图工具类实现ITool 接口, 完成鼠标消 息...
  • 地图标绘指在地图背景上标绘各种具有空间特征的事、物的分布状态或行动部署, 通用地图标绘系统 指在计算机辅助下可实现在多种地图背景下标绘多种行业标号的信息系统。从分析用户需求入手, 给出了该类系 统的功能设置...
  • 地图标绘系统V1.0测试版

    地图标绘系统V1.0测试版


    (界面比较难看,之后再统一美化!)
     


    演示地址http://www.gis520.com/gis/plotdemo/index.html

    查看可在菜单Map——>地图标绘系统V1.0

     





    展开全文
  • 地图标绘系统V1.0测试版【申明:来源于网络】地址:http://blog.csdn.net/allgis/article/details/39718085

    地图标绘系统V1.0测试版【申明:来源于网络】


    这里写图片描述


    地址:http://blog.csdn.net/allgis/article/details/39718085

    展开全文
  • 实现效果 具体标绘功能菜单 备注:具体实现算法来自网络,原有功能基于openlayers 和javascript,先将对应实现基于C#和GM...
  • 地图上绘制点、线和多边形是基本的功能需求,对于开发者来说,经常会用到,譬如在地图上打点标注、绘制行进的线路、标绘安保区域等等,当然你也可以向我这样很二的来个素描。 言归正卷,要绘制简单的几何图形,就...
  • GeometryUtil帮助类:主要用于空间参考(坐标)转换,距离计算等等。 public class GeometryUtil { private const double EARTH_RADIUS = 6378.137;//地球半径 ...param name="mapPolygon"&.
  • 地图标绘(点线面)

    千次阅读 2016-10-10 14:37:23
    * 绘制点线面:点击“添加额外服务”后,地图放大缩小拖拽等功能失效 */ add_gService = (Button) findViewById(R.id.add_gservice); add_gService.setOnClickListener(new View.OnClickListener() { @Override ...
  • DoubleArrow:钳击 /// <summary> /// 钳击 /// </summary>... public class DoubleArrow : GMapPolygon, IPlot ... protected string geo_type = string.Empty;... private PlotTypes type.
  • Circle:圆 /// <summary> /// 圆 /// </summary> public class Circle : GMapPolygon, IPlot { protected string geo_type = string.Empty; protected PointLatLng[] points;... pri..
  • Marker:点符号 public class Marker : GMapMarkerExt.Markers.GMapMarkerLabelImage, IPlot { protected string geo_type = string.Empty; protected PointLatLng[] points;... private int fixPointCount = 0...
  • [android]代码库/*** 地图控件单击事件* @param e 屏幕单击事件* @return boolean*/public boolean onSingleTap(MotionEvent e) {// 如果正处于编辑状态且不处于查询状态if(!isQuery&&isEdit){// 设置浮动...
  • Google地图中的标绘图标 包括标绘用的及显示查询结果的一些小图标 图标大小 24x24 48x48 64x64
  • 地图动态标绘--B/S应用(一)

    千次阅读 2016-12-13 16:15:24
    在前篇地图动态标绘一我们讲了动态标绘的基本构成及在C/S应用上的使用方法,今天我们着重介绍下iServer下的的动态标绘服务以及如何用iClient for javascript 开发动态标绘的B/S应用。开始前的准备SuperMap iClient ...
  • 地图动态标绘--C/S应用

    千次阅读 2016-09-29 16:13:02
    动态标绘广泛应用于电力、通信和应急等多个行业和领域。它可以用形象生动的矢量符号描述各种业务对象,表示各种资源,还可以动态渲染业务进度和流程。SuperMap iObjects.net产品提供了一套完整的态势推演解决方案,...
  • leaflet地图应用-动态标绘polygon

    千次阅读 2019-01-11 18:22:33
    leafletjs是一款优秀的开源二维地图,并提供了丰富的开发Api,下面列举一个在地图上动态标绘polygon的代码,实现起来的比较方便、简单。 具体实现代码: //定义地图对象 map = L.map(’_MainMap’, { maxZoom: 16 ...
  • 上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下:   本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/jsapi/draw-amd.html require(["esri/...
  • 水经注软件除了可以轻松下载无水印Google Earth卫星影像、有明确拍摄日期的历史影像、地方高清天地图、百度高德大字体打印地图,按1万/5千等国家标准图幅下载,对百度坐标与火星坐标进行纠偏,下载陆地及海洋高程、...
  • 地图动态标绘--B/S应用(二)

    千次阅读 2016-12-27 14:37:58
    作者:Sniper 动态标绘广泛应用于电力、通信和应急等多个行业和领域。它可以用形象生动的矢量符号描述各种业务对象,表示各种资源,还可以动态渲染业务进度和流程。
  • 上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下:   本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/jsapi/draw-amd.html require(["esri/toolbars...
  • 标绘功能的使用 发布时间:2018-07-18 版权:BIGEMAP 标绘功能的使用视频:传送门   一、标绘功能的开启    标绘功能的在应用底部功能栏,点击标绘按钮后屏幕将发生变化,这时顶部将出现绘制选项、中间将...
  • 根据形势对当前所需要的人员和设施情况,在地图上进行人员和设施的标绘

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 258
精华内容 103
关键字:

地图标绘