mapbox-gl开发教程(十):创建marker

–mapbox-gl是一个开源、基于webgl技术的前端地图类库–
mapbox-gl提供了两种在地图上创建点数据的方式,一种是上一章讲的符号图层(symbol),另一种是本章讲的marker,这两种方式有各自的适用场景。
符号图层(symbol)是以webgl的形式进行创建加载,数据源是geojson或矢量切片,适合大规模的数据加载,同时数据显示的样式不能过于复杂;
marker是以html dom元素的形式进行创建加载,数据源是坐标点,加载的数据量不能太多,要不然会出现卡顿,不过,数据样式很丰富,完全根据html中排版和css样式进行设计。
地图上创建一个基础的marker:
在这里插入图片描述
实现代码:

var marker = new mapboxgl.Marker()
.setLngLat([30.5, 50.5])
.addTo(map);

通过设置marker的element属性,可以设置自定义的html元素,从页面文档中选取,或者通过createElement进行元素创建:

var el = document.createElement('div');
el.className = 'marker';

开发时,过浏览的开发调试,可以发现在页面上加载了一个html元素,在地图移动时,通过css中的translate rotate等变换参数进行变化,达到跟随地图相应的坐标点。
在这里插入图片描述
marker的关键属性说明:
options.anchor:锚点位置,marker整个dom和地图上坐标点对齐的方式;
options.draggable:是否可以拖拽,设置为true时,marker能够随着鼠标在地图上拖拽移动;
options.offset:marker和地图上坐标点的像素偏移量;

marker的api说明:
https://docs.mapbox.com/mapbox-gl-js/api/markers/#marker

mapbox-gl开发是讲述如何从基础到实际应用进行地图开发的教程,不定时进行持续进行更新,如有疑问,公众号留言进行讨论。
mapbox-gl官网地址:
https://docs.mapbox.com/mapbox-gl-js/guides/

在这里插入图片描述

### Mapbox 使用教程概述 Mapbox 提供了一系列强大的工具和服务来帮助开发者构建自定义的地图应用。现有资源涵盖了多种编程环境和技术栈的支持,包括但不限于Web开发中的JavaScript框架集成以及游戏引擎Unity的应用。 #### Vue.js 集成 Mapbox GL JS 示例 为了简化开发流程并提高效率,Vue.js 结合 Mapbox GL JS 可以为用户提供超过一百个可以直接使用的代码片段[^1]。这些例子不仅展示了如何快速上手使用这两个技术组合,还深入浅出地解析了相关的API概念,使得学习过程更加直观易懂。 ```html <!-- HTML部分 --> <div id="app"> <div ref="mapContainer" class="map-container"></div> </div> <script src="https://api.mapbox.com/mapbox-gl-js/v2.6.1/mapbox-gl.js"></script> <link href="https://api.mapbox.com/mapbox-gl-js/v2.6.1/mapbox-gl.css" rel="stylesheet"/> ``` ```javascript // JavaScript (Vue Component Method) mounted() { mapboxgl.accessToken = 'YOUR_MAPBOX_ACCESS_TOKEN'; const map = new mapboxgl.Map({ container: this.$refs.mapContainer, style: 'mapbox://styles/mapbox/streets-v11', center: [-74.5, 40], zoom: 9 }); } ``` 此段代码实现了在一个Vue组件内初始化一张带有街道样式的基础地图,并设置了初始中心位置和缩放级别。 #### React 应用程序中嵌入交互式地图 对于偏好React的前端工程师来说,`react-map-gl`是一个不可或缺的选择,它提供了更高层次的功能封装和支持[^2]。下面给出了一段简单的示例代码用来展示基本的地图加载方式: ```jsx import React from 'react'; import MapGL, { Marker } from 'react-map-gl'; function App() { return ( <MapGL initialViewState={{ longitude: -122.45, latitude: 37.8, zoom: 12 }} style={{ width: '100vw', height: '100vh' }} mapStyle='mapbox://styles/mapbox/dark-v10' mapboxAccessToken={'YOUR_MAPBOX_ACCESS_TOKEN'} > {/* Add markers or other components here */} </MapGL> ); } export default App; ``` 这段代码通过设置经纬度坐标指定了旧金山作为默认视图的位置,并选择了夜间模式的主题来进行渲染。 #### Unity 游戏开发平台上的地理信息系统支持 当涉及到三维空间内的导航或是模拟真实世界的场景时,Unity配合Mapbox可以创造出令人惊叹的效果。初次使用者需先完成必要的配置工作——即向项目引入有效的API密钥[^3]。 ```csharp using UnityEngine; public class MapboxSetup : MonoBehaviour { void Start() { // 假设已经在Editor里完成了API Key的设定 Debug.Log("Mapbox is ready to use with your provided API key."); } } ``` 上述C#脚本仅作为一个示意性的起点,在实际操作过程中还需要进一步探索更多特性与可能性。 #### Layers 层次结构详解及其实现方法 最后值得一提的是关于Mapbox GL JS里的Layers属性,这允许开发者控制不同类型的地理数据层叠效果。共有九种主要的layer类型可供选用,每一种都有其独特的应用场景和参数选项[^4]。以下是创建填充多边形的一个实例: ```javascript map.addLayer({ "id": "landcover", "type": "fill", // fill 类型表示封闭区域的颜色填充 "source": { type: "geojson", data: "https://example.com/your-geojson-file.geojson" }, "paint": { "fill-color": "#088", "fill-opacity": 0.8 } }); ``` 以上就是针对不同类型的需求所提供的几个入门级指导案例,希望可以帮助到正在寻找合适资料的朋友!
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值