基于leaflet的标绘功能(一)--可调整的圆


标绘功能是指在电子地图上可以标注点、线、面、复杂多边形等图形。主要操作包括上图、调整(大小、方向、位置)、网络存储等。根据具体的业务场景,也可以做到协同标绘等特色功能。其中,要求每个图形有若干关键点控制。目前,很多系统实现的都未达到易用要求,大多只支持贴图或较少的控制点。因此,本系列文章是致力于构建一套较为完整的技术方案解决上述问题。
上面描述的可能没有表达清楚,还是看视频比较好理解。
初步的效果请查看视频
将圆上图之后,点击圆,激活编辑功能,同时显示两个关键点(此时无法拖动地图)。支持鼠标拖动圆调整位置。通过鼠标拖拽圆周上的控制点调整圆的半径。松开鼠标,取消编辑功能。
图形设计问题
整个流程中控制点的调整联动是关键,如何设计关键点的位置关系,关联关系,一个控制点调整后,其他控制点如何变化。控制点之间的连接采用直线还是其他形式的曲线。每个图形各个边之间夹角。这些都需要文字来规范。
可以关注一下贝塞尔曲线。
数据存储问题
1、自动存储
每次鼠标调整操作触发一次存储请求。
2、手动存储
提供保存按钮进行存储。
多人协同问题
可能需要在后端设计锁来解决多人协同时数据矛盾的问题。
源码
完整demo源码见小专栏文章尾部:GIS之家leaflet小专栏
文章尾部提供源代码下载,对本专栏感兴趣的话,可以关注一波
基于leaflet的标绘功能(一)--可调整的圆的更多相关文章
- 基于openlayers2军事标绘,开源
1.其实各GIS公司.网络上 都会有提供 军事标绘的功能,如arcgis 的,超图的.mapgis的:但大多数是非开源.且收费的.2.在这里要感谢超图,超图开源了标绘扩展符号库,我这里使用的就是超图的 ...
- arcgis api for js入门开发系列五地图态势标绘(含源代码)
上一篇实现了demo的地图查询功能,本篇新增地图态势标绘模块,截图如下: 本篇核心的在于调用API的Draw工具:https://developers.arcgis.com/javascript/3/ ...
- arcgis api 3.x for js 入门开发系列五地图态势标绘(附源码下载)
前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...
- 基于ArcGIS Flex API实现动态标绘(1.0)
标绘作为一种数据展示形式,在多个行业都有需求. 基于ArcGIS Flex API(3.6)实现标绘API,当前版本号1.0 alpha,支持经常使用几种标绘符号,包含: 圆弧.曲线.圆形.椭圆.弓形 ...
- 基于ArcGIS Flex API实现动态标绘(1.1)
动态标绘API 1.1版本号.相较前一版本号1.0(点击进入).该版本号提供标绘符号的编辑功能. 编辑功能包含两种编辑状态:编辑控制点.对标绘符号进行旋转.八方向拉伸.平移. 编辑控制点例如以下图所看 ...
- 基于ArcGIS Flex API实现动态标绘(1.2)
动态标绘API 1.2,相较前一版本号(点击进入),该版本号新增对基本标绘符号的支持,包含: 单点.多点.折线.手绘线.多边形.手绘多边形.矩形,并提供对应的编辑功能. 例如以下图所看到的,对多点的编 ...
- 标绘ol3版开源啦
地址:git.oschina.net/ilocation/plot By 平凡的世界 plot4ol3 说明 基于OpenLayers3实现动态标绘API. 在线体验 :7xr2vb.com1.z0. ...
- 动态标绘演示系统1.4.3(for ArcGIS Flex)
标绘有API文档啦! 在线浏览 ------------------------------------------------------------------------------------ ...
- 天津政府应急系统之GIS一张图(arcgis api for flex)讲解(十)态势标绘模块
config.xml文件的配置如下: <widget label="态势标绘" icon="assets/images/impact_area_over.png&q ...
随机推荐
- php ffmpeg视频和序列帧转化
php ffmpeg视频和序列帧转化 <pre>$cmd=shell_exec("ffmpeg -i ".__DIR__ . "/shipin1.mp4 -r ...
- docker——harbor
为什么要用harbor? 在实际生产运维中,往往需要把镜像发布到几十.上百台或更多的节点上.这时单台Docker主机上镜像已无法满足,项目越来越多,镜像就越来越多,都放到一台Docker主机上是不行的 ...
- VueRouter爬坑第一篇-简单实践
VueRouter系列的文章示例编写时,项目是使用vue-cli脚手架搭建. 项目搭建的步骤和项目目录专门写了一篇文章:点击这里进行传送 后续VueRouter系列的文章的示例编写均基于该项目环境. ...
- 数据仓库ETL案例学习(一)
来自课程案例学习 某跨国食品超市的信息管理系统,每天都会记录成千上万条各地连锁超市的销售数据.基于大数据的背景,该公司的管理层决定建立FoodMart数据仓库,期望能从庞大的数据中挖掘出有商业价值 ...
- Linux从git上下东西
git clone 网址 git clone https://github.com/walkor/Workerman
- linux 修改IP地址(设置为静态ip)和主机名
主机名: server0.example.com ip地址: 172.25.0.11 网络掩码: 255.255.255.0 默认网关: 172.25.0.254 域名服务器:172.25.254.2 ...
- nyoj 20-吝啬的国度 (DFS)
20-吝啬的国度 内存限制:64MB 时间限制:1000ms Special Judge: No accepted:12 submit:43 题目描述: 在一个吝啬的国度里有N个城市,这N个城市间只有 ...
- 【计算机网络】TCP基础知识详解
1. TCP概念相关 [!NOTE] TCP(Transmission Control Protocol),又叫传输控制协议. TCP协议是面向连接的,可靠的,基于字节流的传输协议.在基于 TCP 进 ...
- LVM扩容案例
LVM基础命令: pvdisplay 查看检查pv pvremove /dev/sdb #清除一个pv fdisk -l 检查磁盘 df -h 检查全部磁盘大小 df -Th 检查磁盘大小和分区格式类 ...
- inventory
1.设置主机的默认inventory mode. 2. 设置自动Populate 数据