首页 > 其他分享 >Mapbox-图层

Mapbox-图层

时间:2024-11-27 23:12:00浏览次数:4  
标签:map 30.5 coordinates Mapbox 图层 type circle 114.3

GeoJSON

一种基于JSON的地理空间数据格式,它定义了几种类型JSON对象以及它们组合在一起的方法,以表示有关地理要素、属性和它们的空间范围的数据

GeoJSON单个要素:

{
    "type": "Feature",
    "geometry": {
        "type": "Point",
        "coordinates": [114, 30]
    }
}

MapBox GL JS source数据:

{
  type: 'geojson',
  data: {
    type: 'FeatureCollection',
    features: [
      {
        type: 'Feature',
        geometry: {
          type: 'Point',
          coordinates: [114.3, 30.5]
        },
        properties: {
          title: 'My Point'
        }
      }
    ]
  }
}

要素类型:

{
  "type": "Point",
  "coordinates": [114.3, 30.5]
}
  1. 多点
{
  "type": "MultiPoint",
  "coordinates": [
    [114.3, 30.5],
    [116, 30.5]
  ]
}
  1. 线
{
  "type": "LineString",
  "coordinates": [
    [114.3, 30.5],
    [116, 30.5]
  ]
}
  1. 多线
{
  "type": "MultiLineString",
  "coordinates": [
    [
      [114.3, 30.5],
      [116, 30.5]
    ],
    [
      [114.3, 31.5],
      [116, 31.5]
    ]
  ]
}
  1. 多边形
{
  "type": "Polygon",
  "coordinates": [
    [
      [114.3, 30.5],
      [116, 30.5],
      [116, 31.5],
      [114.3, 31.5],
      [114.3, 30.5]
    ]
  ]
}
  1. 多多边形
{
  "type": "MultiPolygon",
  "coordinates": [
    [
      [
        [114.3, 30.5],
        [116, 30.5],
        [116, 31.5],
        [114.3, 31.5],
        [114.3, 30.5]
      ]
    ],
    [
      [
        [114.3, 32.5],
        [116, 32.5],
        [116, 33.5],
        [114.3, 33.5],
        [114.3, 32.5]
      ]
    ]
  ]
}
  1. 几何集合
{
  "type": "GeometryCollection",
  "geometries": [
    {
      "type": "Point",
      "coordinates": [114.3, 30.5]
    },
    {
      "type": "LineString",
      "coordinates": [
        [114.3, 30.5],
        [116, 30.5]
      ]
    }
  ]
}

加载图层

加载关系: map=>source=>layer=>geometry

图层类型:

  1. Circle(圆形):用于在地图上绘制圆形标记,可以设置圆形的半径、颜色、透明度等属性。

  2. Line(线):用于在地图上绘制线条,可以设置线条的颜色、宽度、透明度等属性。

  3. Fill(填充):用于在地图上绘制填充区域,可以设置填充的颜色、透明度等属性。

  4. Symbol(符号):用于在地图上添加文本或图标标记,可以设置符号的字体、颜色、大小等属性。

  5. Raster(栅格):用于在地图上显示栅格图像,可以设置图像的透明度、亮度等属性。

  6. Hillshade(山体阴影):用于在地图上显示山体阴影效果,可以设置阴影的颜色、透明度等属性。

  7. 通过source加载layer:

      // 定义数据
      const data = {
        type: 'FeatureCollection',
        features: [
          {
            type: 'Feature',
            geometry: {
              type: 'Point',
              coordinates: [114.3, 30.5],
            },
          },
        ],
      }
      // 加载数据
      map.on('load', () => {
        // 创建数据源
        map.addSource('wuhan', {
          type: 'geojson',
          data,
        })
        // 创建图层
        map.addLayer({
          id: 'wuhan-circle',
          type: 'circle',
          source: 'wuhan',
          paint: {
            'circle-radius': 15,
            'circle-color': '#ff2d51',
            'circle-opacity': 0.5,
          },
        })
      })
  1. 直接加载layer
      map.on('load', () => {
        // 创建图层
        map.addLayer({
          id: 'hubei-fill',
          type: 'circle',
          source: {
            type: 'geojson',
            data,
          },
          paint: {
            'circle-radius': 15,
            'circle-color': '#ff2d51',
          },
        })
      })

图形绘制

基于坐标绘制

  1. 绘制点
      map.on('load', () => {
        map.addSource('point', {
          type: 'geojson',
          data: {
            type: 'Feature',
            geometry: {
              type: 'Point',
              coordinates: [114.3, 30.5],
            },
          },
        })
        map.addLayer({
          id: 'Point',
          type: 'circle',
          source: 'point',
          paint: {
            'circle-opacity': 0.8,
            'circle-radius': 15,
            'circle-color': '#ff2d51',
            //设置边线
            'circle-stroke-opacity': 0.5,
            'circle-stroke-width': 4,
            'circle-stroke-color': '#ffcc33',
          },
        })
      })

      map.on('click', () => {
        // 设置点的属性
        map.setPaintProperty('Point', 'circle-color', '#faafee')
      })
  1. 绘制线
      map.on('load', () => {
        addLine()
      })
      function addLine() {
        var geometryLine = {
          type: 'Feature',
          geometry: {
            type: 'LineString',
            coordinates: [
              [114.3, 30.5],
              [116, 30.5],
            ],
          },
        }
        map.addLayer({
          id: 'Line',
          type: 'line',
          source: {
            type: 'geojson',
            data: geometryLine,
          },
          //设置线型
          layout: {
            //线条末端样式
            'line-cap': 'round',
            //线条相交处样式
            'line-join': 'round',
          },
          //设置绘制参数
          paint: {
            'line-color': 'red',
            'line-width': 4,
            'line-opacity': 0.6,
          },
        })
      }
  1. 绘制圆
      map.on('load', () => {
        addCircle()
      })
      function addCircle() {
        var geometryCircle = {
          type: 'Feature',
          geometry: {
            type: 'Point',
            coordinates: [114.3, 30.5],
          },
        }
        map.addLayer({
          id: 'Circle',
          type: 'circle',
          source: {
            type: 'geojson',
            data: geometryCircle,
          },
          //设置绘制参数
          paint: {
            'circle-radius': 30,
            'circle-color': 'white',
            //设置边线宽度
            'circle-stroke-width': 2,
            'circle-stroke-color': '#ffcc33',
          },
        })
      }
  1. 绘制矩形
      map.on('load', () => {
        addRectangle()
      })
      function addRectangle() {
        var geometryRectangle = {
          type: 'FeatureCollection',
          features: [
            {
              type: 'Feature',
              geometry: {
                type: 'Polygon',
                coordinates: [
                  [
                    [114.3, 30.5],
                    [114.5, 30.5],
                    [114.5, 30.6],
                    [114.3, 30.6],
                  ],
                ],
              },
            },
          ],
        }
        map.addLayer({
          id: 'Rectangle',
          //指定类型为fill(填充区域)
          type: 'fill',
          source: {
            type: 'geojson',
            data: geometryRectangle,
          },
          paint: {
            'fill-color': '#ffcc33',
            'fill-opacity': 0.9,
          },
        })
      }

交互式绘制

<script src="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.2.2/mapbox-gl-draw.js"></script>
<link rel="stylesheet" href="https://api.mapbox.com/mapbox-gl-js/plugins/mapbox-gl-draw/v1.2.2/mapbox-gl-draw.css"
    type="text/css">
      const draw = new MapboxDraw({
        //不允许使用键盘交互绘制
        keybindings: false,
        //设置为ture,可按住shift+拉框来拾取图形
        boxSelect: true,
        //点击要素时的响应半径(像素单位)
        clickBuffer: 5,
        //默认控件显示方式。如果设置为true,则会添加所有的绘图控件
        displayControlsDefault: false,
        //添加指定的绘制控件
        controls: {
          //绘制线控件
          line_string: true,
          //绘制多边形控件
          polygon: true,
          //绘制点控件
          point: true,
          //删除图形控件
          trash: true,
        },
      })
      //将绘制控件添加到左上角
      map.addControl(draw, 'top-left')
      map.on('draw.create', handleDraw)
      function handleDraw(e) {
        var position = e.features[0].geometry.coordinates
        console.log(position)
      }

标注

对地图上某个点的说明, 包括

  • 图片标注
  • 文本标注

Markers and controls API: Mapbox GL JS

默认标注

      map.on('load', () => {
        // 1. 创建标注对象
        const marker = new mapboxgl.Marker()
        // 2. 设置属性
        marker.setLngLat([114.3, 30.5]) // 设置经纬度
        // 3. 添加到map地图
        marker.addTo(map)
      })

可拖动标注

      var marker = new mapboxgl.Marker({
        draggable: true,
      }).setLngLat([114.3, 30.5])
      
      map.on('load', () => {
        marker.addTo(map)
      })
      marker.on('dragend', onDragEnd)
      function onDragEnd() {
        var lngLat = marker.getLngLat()
        console.log(lngLat)
      }
marker的属性 说明
draggable(boolean) true/false 是否可以拖动
color 设置颜色
rotation 旋转

自定义标注

    <style>
      * {
        margin: 0;
        padding: 0;
      }
      #map {
        width: 100vw;
        height: 100vh;
      }
      #marker {
        background-image: url('https://img.gejiba.com/images/db6e7706e2c3dcae834e44b0e888c767.jpg');
        background-size: cover;
        width: 50px;
        height: 50px;
        border-radius: 50%;
        cursor: pointer;
      }
    </style>

  <body>
    <!-- 2. 创建地图容器 -->
    <div id="map"></div>
    <!-- 3. 创建地图对象 -->
    <script>
      const map = new mapboxgl.Map({
        container: 'map', // 指定地图容器的id
        style: 'mapbox://styles/mapbox/streets-v12', // 地图样式/风格
        center: [114.3, 30.5], // 中心坐标点
        zoom: 12, // 缩放比例
        projection: 'equalEarth', // 投影方式
      })

      // <div id="marker"></div>
      const element = document.createElement('div')
      element.id = 'marker'

      const marker = new mapboxgl.Marker({
        element: element,
      }).setLngLat([114.3, 30.5])

      map.on('load', () => {
        marker.addTo(map)
      })
    </script>
  </body>
</html>

标签:map,30.5,coordinates,Mapbox,图层,type,circle,114.3
From: https://www.cnblogs.com/khrushchefox/p/18573301

相关文章

  • Mapbox-底图
    加载地图导入mapbox库和样式创建渲染容器创建地图对象<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"/><metahttp-equiv="X-UA-Compatible"content="IE=edge"/><metaname=&q......
  • ArcGIS填补面图层的细小空白并删除主体部分外的零散部分
      本文介绍在ArcMap软件中,基于消除面部件(“EliminatePolygonPart”)工具,对矢量面要素的零碎、空洞区域加以删除,同时将游离于要素主体之外的部分剔除的方法。1前言  在上一篇文章ArcMap用一个面要素擦除另一个面要素的部分中,我们利用“擦除”(“Erase”)方法,对一个包含水体与......
  • MapBox Android版开发 6 关于Logo
    MapBoxAndroid版开发6关于LogoLogo的显示查看源码及思路(Logo)第一步第二步隐藏Logo示例查看源码及思路(Info)第一步第二步隐藏Logo和Info示例看到有网友留言问如何移除Logo,今天看了下V9源码,发现MapBox提供了禁用Logo的功能。先简单说下思路部分源码,最后是示例。L......
  • UG二次开发基础篇-图层管理
    今天我们来实现第一个UG的应用功能。功能包括:设置工作图层、图层类别管理、打开、关闭图层。进入DLX编辑窗口,新建图层管理窗口,如图所示:代码生成,选择C++.......
  • 【Java+GDAL】读取shp文件图层几何类型
    文章目录前言一、GDAL和Java版本二、代码实现1.引入gdal环境2.代码实现3.ogrConstants中的几何类型总结前言今天继续Java+GDAL,之前写的几篇处理shp的文章包括:【Java+GDAL】读取shp文件的坐标信息(坐标系+EPSG码)【Java+GDAL】shp新增属性字段与删除属性字段【Java......
  • ArcGIS Pro SDK (十四)地图探索 2 地图图层
    ArcGISProSDK(十四)地图探索2地图图层文章目录ArcGISProSDK(十四)地图探索2地图图层1地图1.1获取活动地图的名称1.2清除活动地图中的所有选择1.3以地图单位计算选择容差1.4地图视图叠加控制2图层2.1选择目录中的所有要素图层2.2闪烁所选......
  • GIS开发从0到1|MapboxGL可视化项目实战教程(含步骤说明和代码展示)1
    通用可视化聚类代码展示<!DOCTYPEhtml><htmlxmlns="http://www.w3.org/1999/xhtml"><head><metahttp-equiv="Content-Type"content="text/html;charset=utf-8"/><title>聚类显示</title>&l......
  • MapBox Android版开发 4 国际化功能v11
    MapBoxAndroid版开发4国际化功能v11前言遇到的问题国际化功能原文给出的方案(V10版)migrate-to-v11适用于V11版的代码示例MapStyle类运行效果图前言在前文MapBox地图样式v11中,使用Style的localizeLabels方法本地化地图语言。但MapboxStandard样式和MapboxStan......
  • Ae常用工具和图层的概念
    目录常用工具 图层的概念图层类型常用工具 对工具栏长按鼠标左键可以看到一个下拉菜单。 选中矩形后可以进行填充或者描边。 摁住shift建立一个矩形。摁住空格可以移动画布。 选取工具可以移动图形。旁边还有放缩工具。 图层的概念比如我们建立一个新......
  • OpenLayers如何设置图层闪烁效果并加载到地图上
        (本篇文章前提是了解openlayers具体使用方法)    给图层增加闪烁效果,具体的实现思路其实就是从图层的style入手,通过设置两个不同的style并结合定时器,最后加载在地图上即可。        当然,通过设置不同的style,不仅可以实现闪烁,还可以自定义实现,如大......