高德地图绘制多边形
2019-01-03 16:55
148 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32768743/article/details/85704813
我的要求是相交不能添加
相交判定
官方示例地址:https://lbs.amap.com/api/javascript-api/example/overlayers/overlay-draw
draw事件比较坑,需要
结束时触发
怎么结束呢?
那就是点击鼠标右键。
我的需求是在画点之前要判断能不能画,所以这个就用不了。
于是自己开始写
具体的实现就是充分利用这段代码
- 根据
path
创建一个多边形
const polygon = new AMap.Polygon({ path: path, isOutline: true, borderWeight: 3, strokeColor: "#FF33FF", strokeWeight: 6, strokeOpacity: 0.2, fillOpacity: 0.4, // 线样式还支持 'dashed' fillColor: '#1791fc', zIndex: 50, })
- 将多边形放到高德地图上去
polygon.setMap(map)
- 销毁的话是设置为
null
,还有隐藏等操作具体参考文档:https://lbs.amap.com/api/javascript-api/reference/overlay#polygon
polygon.setMap(null)
- 每次画一个点,就重新创建一个多边形,销毁之前的多边形
// 重建一个多边形 this.currentDrawPolygon.setMap(null) this.currentDrawPolygon = this.createPolygon([...this.path, this.mousePoint]) this.currentDrawPolygon.setMap(this.map)
这样就具有了和官方绘制多边形一样的行为
接下来的是自己的需求了,要判断这个点能不能画
现在只需要在点击的时候,判断一下,控制
path数组的数据就行了
我的要求是相交不能添加
相交判定
// 判断两条线段是否有交点 segmentsIntr(a, b, c, d) { //快速排斥实验 if ((a.lng > b.lng ? a.lng : b.lng) < (c.lng < d.lng ? c.lng : d.lng) || (a.lat > b.lat ? a.lat : b.lat) < (c.lat < d.lat ? c.lat : d.lat) || (c.lng > d.lng ? c.lng : d.lng) < (a.lng < b.lng ? a.lng : b.lng) || (c.lat > d.lat ? c.lat : d.lat) < (a.lat < b.lat ? a.lat : b.lat)) { return false; } //跨立实验 if ((((a.lng - c.lng) * (d.lat - c.lat) - (a.lat - c.lat) * (d.lng - c.lng)) * ((b.lng - c.lng) * (d.lat - c.lat) - (b.lat - c.lat) * (d.lng - c.lng))) > 0 || (((c.lng - a.lng) * (b.lat - a.lat) - (c.lat - a.lat) * (b.lng - a.lng)) * ((d.lng - a.lng) * (b.lat - a.lat) - (d.lat - a.lat) * (b.lng - a.lng))) > 0) { return false; } return true; },
差不多就是这样
相关文章推荐
- 使用高德地图绘制多边形区域(转)
- 高德地图 SDK 的应用 02:多边形区域图的手动重绘制
- 使用高德地图绘制多边形区域
- 高德地图 SDK 的应用 01:绘制多边形区域图
- 使用View绘制矩形,多边形
- cocos2d-x 绘制多边形(凹形)问题
- 百度地图接口绘制任意多边形并获取每个点的经纬度
- OpenCv学习笔记(七)---OpenCv中的基本绘图函数,圆,椭圆,线段,矩形,多边形的绘制(1)
- opengl绘制固定宽度多边形圆角边框算法(历时周半,撰博文以志纪念)
- 用多边形近似球体表面(icosphere)的Mesh数据的生成并使用openGL绘制
- 高德地图添加多边形Polygon颜色异常的解决
- CCDrawNode(是一个节点有drawDot drawSegment drawPolygon方法 可以类绘制点 线段 多边形--与drawing primitives不同 采用批渲染)
- 高德地图-绘制去程和回程路线
- android自定义View创建一个Path绘制多边形,贝塞尔曲线,
- 纯CSS画的基本图形技巧绘制(矩形、圆形、三角形、多边形、爱心、八卦等)
- 绘制多边形
- OPENGL绘制复杂多边形
- 基于Skyline的TerraExplorer6.1.1如何通过二次开发实现折线和多边形对象的手动绘制
- [WebGL入门]十四,绘制多边形
- 黑马之前,form_load 窗口覆盖我绘制的多边形解决办法