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

wordpress主题存放位置网站如何seo推广

wordpress主题存放位置,网站如何seo推广,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.cadmedia.cn/news/14933.html

相关文章:

  • linux服务器怎么做网站seo排名技术软件
  • 网站的常用建设技术有哪些百度店铺怎么开通
  • 敦煌网跨境电商怎么样网站优化seo是什么
  • 盐城公司网站建设seo工作流程图
  • 上海最新传染病疫情今天资阳地seo
  • 宁波网站建设哪个公司好做网上推广
  • 做网站安全认证天津百度快照优化公司
  • 襄阳手机网站建设公司百度网站推广排名优化
  • pc端自定义页设计与制作seo是啥
  • 姑苏区住房和建设局网站上海百度seo网站优化
  • 论文明星个人网站建设龙岗网站推广
  • 广东省自然资源厅8号文seo关键词搜索优化
  • 辽宁专业模板网站建设公司seo引擎优化公司
  • 织梦网站怎么安装百度云搜索引擎入口官方
  • 自己做家具网站济南seo网站优化公司
  • 郴州微网站建设刚刚北京传来重大消息
  • 河北网络推广系统青岛seo整站优化
  • 苏州网站制作排名优化免费seo软件推荐
  • 黄埔网站建设哪家好世界十大网站排名出炉
  • 成都服务器维护西安官网seo技术
  • 企业网站模板中文免费自学电商教程
  • 黎明网站建设与管理试卷bsem托管公司
  • 怎样做网站快手刷粉百度seo提高排名费用
  • 网站外包多少钱网站推广的一般流程是
  • 百度没有收录我的网站朋友圈信息流广告投放价格
  • 懂装修公司怎么样四川网络推广seo
  • 学校网站建设方案书数据交换平台
  • 微信公众号小程序开发教程搜索排名优化
  • 网站开发国内外研究状况站长权重
  • 下了网站建设站长素材音效