Mapbox GL JS 根据指定的点在地图上标记一个指定半径(KM)的圆形区域

本文介绍了如何在Mapbox GL JS中根据用户指定的点,创建并更新一个具有特定半径(公里)的圆形区域。通过构造函数输入中心点经纬度、半径和点数,可以轻松实现这一功能。
摘要由CSDN通过智能技术生成

需求描述:

小明在使用mapbox-gl进行开发时,需要实现用户指定地图上的一个点,然后根据这个点,突出显示以其为中心的一定半径的圆形区域。半径可以为小明指定的千米数。

具体实现点击产生点的功能就不描述了,这里主要描述产生圆形区域的方法。

1. 构造函数:输入中心点经纬度,和半径大小(KM),以及点数。

var createGeoJSONCircle = function(center, radiusInKm, points) {
   
    if(!points) points = 64;

    var coords = {
   
        latitude: center[1],
        longitude: center[0]
    };

    var km = radiusInKm;

    var ret = [];
    var distanceX = km/(111.320
Mapbox GL JS 中添加球面上的标记与在平面地图上添加标记的方法类似,但需要使用 `turf.js` 库来实现。具体步骤如下: 1. 安装 `turf.js` 库。 ```bash npm install turf ``` 2. 在你的代码中引入 `turf.js` 和 Mapbox GL JS 库。 ```javascript import mapboxgl from 'mapbox-gl'; import turf from '@turf/turf'; ``` 3. 创建一个 `FeatureCollection` 对象,并将标记添加到这个对象中。 ```javascript const markers = [ [-122.414, 37.776], [-122.408, 37.77], [-122.404, 37.774] ]; const featureCollection = turf.featureCollection(markers.map(marker => { return turf.point(turf.toWgs84(marker)); })); ``` 在球面上添加标记需要将坐标转换为 WGS84 坐标系,可以使用 `turf.toWgs84()` 方法来实现。 4. 将 `FeatureCollection` 添加到 Mapbox GL JS地图上。 ```javascript map.on('load', function() { map.addSource('markers', { type: 'geojson', data: featureCollection }); map.addLayer({ id: 'markers-layer', type: 'symbol', source: 'markers', layout: { 'icon-image': 'marker-15', // 标记图标 'icon-size': 1.5 } }); }); ``` 这里我们使用了 `symbol` 图层来显示标记,你也可以使用其他类型的图层来显示标记。注意,这种方法只适用于在球面上添加标记,如果你需要在平面地图上添加标记,则可以直接使用 Mapbox GL JS 的 API。 另外,你还可以通过 Mapbox GL JS 提供的 `Marker` 类来添加标记,这种方法不需要使用 `turf.js` 库,示例代码如下: ```javascript const marker = new mapboxgl.Marker() .setLngLat([-122.414, 37.776]) .addTo(map); ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值