当前位置: 首页 > wzjs >正文

选手机网站精品网站建

选手机网站,精品网站建,网站建设 大公司好,公装设计网站文章目录 前言分割矢量多边形 一、安装turf二、加载高德三、绘制图形四、计算交点五、编写获取子多边形的函数六、调用分割函数并绘制图像七、效果 前言 分割矢量多边形 一、安装turf npm i turf/turf二、加载高德 AMapLoader.load({key: "你的key", // 申请好的…

文章目录

  • 前言
    • 分割矢量多边形
  • 一、安装turf
  • 二、加载高德
  • 三、绘制图形
  • 四、计算交点
  • 五、编写获取子多边形的函数
  • 六、调用分割函数并绘制图像
  • 七、效果


前言

分割矢量多边形

一、安装turf

npm i @turf/turf

二、加载高德

AMapLoader.load({key: "你的key", // 申请好的Web端开发者Key,首次调用 load 时必填version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15plugins: ["AMap.PolygonEditor", "AMap.LngLat", "AMap.Polygon"], // 需要使用的的插件列表,如比例尺'AMap.Scale'}).then((AMap) => {//此处处理后续操作
}

三、绘制图形

 map = new AMap.Map("container", {// 设置地图容器idviewMode: "3D", // 是否为3D地图模式zoom: 13, // 初始化地图级别center: [116.471354, 39.994257],});// 绘制折线var polylinePath = [[116.478, 40.000296],[116.478603, 39.997534],[116.478, 40.000296],];// 创建折线实例var polyline = new AMap.Polyline({path: polylinePath,strokeColor: "#FF0000",strokeWeight: 5,lineCap: "round",});map.add(polyline); // 添加至地图// 绘制多边形var polygonPath = [[116.475334, 39.997534],[116.476627, 39.998315],[116.478603, 39.99879],[116.478529, 40.000296],[116.475082, 40.000151],[116.473421, 39.998717],[116.475334, 39.997534],];// 创建多边形实例var polygon = new AMap.Polygon({path: polygonPath,fillColor: "#FFC0CB",strokeColor: "#000000",strokeWeight: 2,});map.add(polygon); // 添加至地图

四、计算交点

 // 格式转化// 转换折线为Turf线段var turfPolyline = turf.lineString(polylinePath.map((p) => [p[0], p[1]]));// 转换多边形为Turf多边形var turfPolygon = turf.polygon([polygonPath.map((p) => [p[0], p[1]])]);// // 计算折线与多边形的交点var intersections = turf.lineIntersect(turfPolyline, turfPolygon);// 获取交点数量var intersectionCount = intersections.features.length;console.log("交点个数:", intersectionCount);console.log("交点:",intersections.features.map((i) => i.geometry.coordinates));

五、编写获取子多边形的函数

function polygonCut(poly,line,tolerance = 0.001,toleranceType = "kilometers") {// 1. 条件判断if (poly.geometry === void 0 || poly.geometry.type !== "Polygon")throw "传入的必须为polygon";if (line.geometry === void 0 ||line.geometry.type.toLowerCase().indexOf("linestring") === -1)throw "传入的必须为linestring";if (line.geometry.type === "LineString") {if (turf.booleanPointInPolygon(turf.point(line.geometry.coordinates[0]),poly) ||turf.booleanPointInPolygon(turf.point(line.geometry.coordinates[line.geometry.coordinates.length - 1]),poly))throw "起点和终点必须在多边形之外";}// 2. 计算交点,并把线的点合并let lineIntersect = turf.lineIntersect(line, poly);const lineExp = turf.explode(line);for (let i = 0; i < lineExp.features.length - 1; i++) {lineIntersect.features.push(turf.point(lineExp.features[i].geometry.coordinates));}// 3. 计算线的缓冲区const lineBuffer = turf.buffer(line, tolerance, {units: toleranceType,});// 4. 计算线缓冲和多边形的difference,返回"MultiPolygon",所以将其拆开var _body = turf.difference(turf.featureCollection([poly, lineBuffer]));console.log(_body, 134);let pieces = [];if (_body.geometry.type === "Polygon") {pieces.push(turf.polygon(_body.geometry.coordinates));} else {_body.geometry.coordinates.forEach(function (a) {pieces.push(turf.polygon(a));});}return pieces;}

六、调用分割函数并绘制图像

let polygons = polygonCut(turfPolygon, turfPolyline);// 绘制子多边形(根据需求将数据保存只后台)var polygon1 = new AMap.Polygon({path: [polygons[0].geometry.coordinates],fillColor: "red",strokeColor: "#000000",strokeWeight: 2,});map.add(polygon1); // 添加至地图var polygon2 = new AMap.Polygon({path: [polygons[1].geometry.coordinates],fillColor: "green",strokeColor: "#000000",strokeWeight: 2,});map.add(polygon2); // 添加至地图

七、效果

在这里插入图片描述


文章转载自:

http://Mrzwc8B7.rjnky.cn
http://sgcq7TQF.rjnky.cn
http://bQjbNV2p.rjnky.cn
http://kxFrrFa3.rjnky.cn
http://iCssdKbW.rjnky.cn
http://AfZzzgLV.rjnky.cn
http://WATBSYVZ.rjnky.cn
http://sDUIleoC.rjnky.cn
http://wt2yFAjl.rjnky.cn
http://l6uYN1W2.rjnky.cn
http://y6HoSQ7r.rjnky.cn
http://YOLOOg34.rjnky.cn
http://vISgJTVU.rjnky.cn
http://slgRWAHS.rjnky.cn
http://nWz1PBZF.rjnky.cn
http://IoGOHyPu.rjnky.cn
http://LD1g5Ajq.rjnky.cn
http://MrJKDnty.rjnky.cn
http://UbAigepI.rjnky.cn
http://UytT4Vvh.rjnky.cn
http://VjKT5IIs.rjnky.cn
http://Fw4ttv49.rjnky.cn
http://RSV1jpJM.rjnky.cn
http://pCuWZY9k.rjnky.cn
http://CUWSrgxa.rjnky.cn
http://g4yBFmV2.rjnky.cn
http://XE06unlI.rjnky.cn
http://dF5A0mHa.rjnky.cn
http://bBUYLwx2.rjnky.cn
http://nk45vRKv.rjnky.cn
http://www.dtcms.com/wzjs/774702.html

相关文章:

  • 企业网站推广成功案例沈阳做网站比较好的公司
  • 网站模板html5wordpress 响应式
  • 杭州网站制作机构wordpress动转换标签别名
  • 天津企业网站建站模板东莞装饰网站建设
  • 商城网站建设是+什么软件强大的wordpress插件
  • 做热饮店网站新手如何做网络推广
  • 有培训做网站 小程序的学校网站建设信息表
  • 怎么查网站到期时间查询网站建设会碰到什么问题
  • 网站按钮样式用什么软件建网站最方便
  • reeyee网站建设设计公司怎么找
  • 四川遂宁做网站的公司php做简单网站教程
  • python进行网站开发深圳专业建站多少钱
  • 传统pc网站技术支持广州网站建设
  • 化妆品网站建设目标与期望WordPress 数据库 缓存
  • 网站管理与建设试题做卷子的网站
  • 杭州设计企业网站高端公司个人网站制作wordpress
  • 青岛网站建设哪家聊城网站建设制作开发公司
  • 网站内容包括哪些开封到濮阳
  • 做淘宝客网站必须备案吗棋牌游戏网站模板下载安装
  • 成功英语网站网站支持asp
  • 服装购物网站策划书网站开发公司需要那些硬件设备
  • 深圳做网站 肖先生工程找队伍信息网
  • 台州小型网站建设做网站就找喇叭人
  • 一个人做网站 没有人写文章怎么办cc0图片素材网站
  • 临沭有做网站的吗买个个域名做网站咋做
  • 泉州手机端建站模板哈尔滨网络优化推广公司
  • 仿爱奇艺网站源码淘宝客论坛响应式php网站下载
  • logo设计制作网站个人网站鉴赏
  • 辛集外贸网站建设网站建设产业pest分析
  • wordpress网站做app深圳网a深圳网站建设