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

百度上如何做优化网站wordpress 目录权限设置

百度上如何做优化网站,wordpress 目录权限设置,什么是互联网企业,深圳商城网站设计以下是如何使用 Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解。Mapbox GL JS 是一个强大的 JavaScript 库,可以用来创建交互式地图。下面将通过监听鼠标事件并动态更新地图图层来实现这一功能。 实现步骤 初始化地图 在 HTML 文件中引入 Mapbox GL JS 库&…

以下是如何使用 Mapbox GL JS 实现鼠标绘制矩形功能的详细代码和讲解。Mapbox GL JS 是一个强大的 JavaScript 库,可以用来创建交互式地图。下面将通过监听鼠标事件并动态更新地图图层来实现这一功能。


实现步骤

  1. 初始化地图

    • 在 HTML 文件中引入 Mapbox GL JS 库,并设置一个容器来显示地图。
    • 创建一个 mapboxgl.Map 实例,配置地图样式、中心点和缩放级别。
  2. 监听鼠标事件

    • 使用 map.on 方法监听 mousedown(鼠标按下)、mousemove(鼠标移动)和 mouseup(鼠标松开)事件。
    • mousedown 时记录矩形的起始点。
    • mousemove 时根据鼠标位置实时更新矩形。
    • mouseup 时结束绘制并固定矩形。
  3. 绘制矩形

    • 使用 GeoJSON 数据格式表示矩形。
    • 通过 map.addSourcemap.addLayer 将矩形添加到地图上。
    • 在鼠标移动时动态更新 GeoJSON 数据以显示矩形的当前形状。
  4. 结束绘制

    • 在绘制完成后移除不必要的事件监听器,避免重复触发。

详细代码

以下是完整的 HTML 和 JavaScript 代码示例:

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Mapbox GL 绘制矩形</title><script src="https://api.mapbox.com/mapbox-gl-js/v2.10.0/mapbox-gl.js"></script><link href="https://api.mapbox.com/mapbox-gl-js/v2.10.0/mapbox-gl.css" rel="stylesheet"><style>body { margin: 0; padding: 0; }#map { position: absolute; top: 0; bottom: 0; width: 100%; }</style>
</head>
<body><div id="map"></div><script>// 设置 Mapbox 访问令牌mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN'; // 请替换为你的 Mapbox 访问令牌// 初始化地图const map = new mapboxgl.Map({container: 'map', // 地图容器 IDstyle: 'mapbox://styles/mapbox/streets-v11', // 地图样式center: [-74.5, 40], // 初始中心点(经度,纬度)zoom: 9 // 初始缩放级别});let startPoint; // 矩形起始点// 开始绘制:监听鼠标按下事件function startDrawing(e) {startPoint = e.lngLat; // 记录鼠标按下时的经纬度map.on('mousemove', drawRectangle); // 开始监听鼠标移动map.on('mouseup', stopDrawing); // 开始监听鼠标松开}// 绘制矩形:监听鼠标移动事件function drawRectangle(e) {const endPoint = e.lngLat; // 获取鼠标当前位置// 计算矩形的四个顶点坐标const coordinates = [[startPoint.lng, startPoint.lat], // 左上角[endPoint.lng, startPoint.lat],   // 右上角[endPoint.lng, endPoint.lat],     // 右下角[startPoint.lng, endPoint.lat],   // 左下角[startPoint.lng, startPoint.lat]  // 回到起点闭合];// 创建矩形的 GeoJSON 数据const rectangleGeoJSON = {type: 'Feature',geometry: {type: 'Polygon',coordinates: [coordinates]}};// 如果数据源已存在,则更新;否则创建新数据源和图层if (map.getSource('rectangle')) {map.getSource('rectangle').setData(rectangleGeoJSON);} else {map.addSource('rectangle', {type: 'geojson',data: rectangleGeoJSON});map.addLayer({id: 'rectangle-layer',type: 'fill',source: 'rectangle',paint: {'fill-color': '#088', // 填充颜色'fill-opacity': 0.5   // 透明度}});}}// 结束绘制:监听鼠标松开事件function stopDrawing() {map.off('mousemove', drawRectangle); // 移除鼠标移动监听map.off('mouseup', stopDrawing);     // 移除鼠标松开监听// 可以在此保存矩形数据或执行其他操作}// 绑定鼠标按下事件,开始绘制流程map.on('mousedown', startDrawing);</script>
</body>
</html>

代码讲解

1. 初始化地图
  • 引入 Mapbox GL JS:通过 <script><link> 标签引入 Mapbox GL JS 的 JavaScript 和 CSS 文件。
  • 设置访问令牌:将 mapboxgl.accessToken 设置为你的 Mapbox 访问令牌(需自行申请)。
  • 创建地图实例:使用 mapboxgl.Map 配置地图,指定容器 ID(map)、地图样式(streets-v11)、中心点和缩放级别。
2. 监听鼠标事件
  • 鼠标按下 (mousedown)
    • 通过 e.lngLat 获取鼠标按下时的经纬度,存储在 startPoint 中。
    • 绑定 mousemovemouseup 事件,开始绘制流程。
  • 鼠标移动 (mousemove)
    • 调用 drawRectangle 函数,实时更新矩形形状。
  • 鼠标松开 (mouseup)
    • 调用 stopDrawing 函数,移除事件监听器,结束绘制。
3. 绘制矩形
  • 计算坐标:根据 startPoint 和当前鼠标位置 endPoint,生成矩形的四个顶点坐标,形成闭合的多边形。
  • 创建 GeoJSON:将坐标封装为 GeoJSON 格式的 Polygon 类型。
  • 更新地图
    • 如果地图上已有 rectangle 数据源,则通过 setData 更新数据。
    • 如果没有,则通过 addSource 添加数据源,并通过 addLayer 创建一个填充图层来显示矩形。
  • 样式设置:矩形填充颜色为 #088(青色),透明度为 0.5
4. 结束绘制
  • stopDrawing 函数中,使用 map.off 移除 mousemovemouseup 的事件监听器,确保绘制过程不会重复触发。
  • 你可以选择在此处保存矩形数据(例如存储到数组中)或添加其他功能。

注意事项

  • 访问令牌:确保将 'YOUR_MAPBOX_ACCESS_TOKEN' 替换为你的实际 Mapbox 访问令牌,否则地图无法加载。
  • 单一矩形:当前代码只支持绘制一个矩形,绘制完成后会覆盖之前的矩形。如需支持多个矩形,可以为每个矩形生成唯一的 ID 并创建独立图层。
  • 扩展功能:你可以添加按钮或逻辑来重置地图状态,或允许用户删除已绘制的矩形。

通过以上代码可以在 Mapbox GL JS 地图上实现鼠标绘制矩形的功能。这一功能适用于区域选择、地图标注等场景,具有很强的实用性。

http://www.dtcms.com/a/512793.html

相关文章:

  • 涪陵建设工程信息网站除了红动中国还有哪些设计网站
  • JVM虚拟机入门到实战(持续更新中)
  • 苏州网站建设与网络营销网络销售的好处和意义
  • 免费wordpress主题分享seo网站建站公司的主页
  • 外贸网站宗旨网站建设包括哪些方面
  • 什么外设选择开漏,什么外设选择推挽?
  • HTML 标签及推荐嵌套结构
  • 优先算法专题十二——栈
  • Flare 少样本学习嵌入式agent
  • Windows 系统下 n8n 自动化工具的完整部署指南
  • 138ip地址查询网站php wordpress joom
  • 贴片电阻封装尺寸与功率等级对照表及选型指南:从0201到2512的全面解析
  • 基于单片机的智能灯光控制系统设计与实现(论文+源码)
  • TypeScript 高级类型工具:Partial, Required, Record 的妙用与陷阱
  • 网站建设的感想和建议做网站需要用c语言吗
  • 做网站买域名怎么弄做网站推广需要哪些知识
  • HTML5网站建设案例深圳专业企业网站制作哪家好
  • 虚拟机产品有哪些,有啥区别,如何安装
  • 2025年低代码平台选型指南
  • 在线支付的网站怎么做百度推广会帮你做网站不
  • 广州网站建设多少钱浙江核酸检测查验
  • LRU缓存淘汰算法Java实现
  • 合肥搭建网站建设厅安全员证
  • 定制网站开发接私活临桂建设局网站
  • C++蓝桥杯之指针10.20(竞赛中很少使用)
  • 平安大模型面试题:Self-Attention 原理与多头注意力设计
  • 手机网站是怎么做的邢台最近发生的新闻
  • 三周期共振强度系数的量化模型
  • swarm集群部署
  • 建设网站的工作wordpress更改导航栏样式