五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

mapbox-gl開發(fā)教程(十四):畫圓技巧

2022-07-14 09:00 作者:地理信息技術(shù)雜談  | 我要投稿

mapbox-gl提供了一個畫圓的圖層方式,圖層的類型設置成circle,通過設置circle-radius,實現(xiàn)圓的大小變化,不過這個參數(shù)的單位是像素(pixels),在地圖縮放的時候,圓一直是像素尺寸,在地圖上覆蓋的空間面積也不同,不能滿足按照地理距離單位的變化。
mapbox-gl圓的屬性設置:

https://docs.mapbox.com/mapbox-gl-js/style-spec/layers/#circle

第一種方式:要實現(xiàn)地圖上按照一定距離(米)畫圓,需要使用mapbox-gl的表達式功能(expressions),首先找到墨卡托坐標距離和屏幕上的像素換算公式,如下:

根據(jù)函數(shù),傳入圓的地理距離和圓中心點所在的緯度坐標,計算地圖縮放到20級時,圓在屏幕上的像素尺寸:

function metersToPixelsAtMaxZoom(meters, latitude) {return meters / 0.075 / Math.cos(latitude * Math.PI / 180)}

在地圖上添加圓的時候,根據(jù)計算的像素尺寸,通過mapbox-gl的表達式設置,實現(xiàn)隨著地圖縮放,圓的尺寸變化:


//添加數(shù)據(jù)源

map.addSource("circle_source",

{

"type":?"geojson",

"data": {

"type": "FeatureCollection",

"features": [

{"type": "Feature","geometry": {"type": "Point","coordinates": [110.132, 21.768]}?}]}});//添加圓的圖層

map.addLayer({

"id": "circle_layer",//類型設置

"type": "circle",//數(shù)據(jù)源id設置

"source": "circle_source","paint": {??

?//關(guān)鍵處,設置圓的半徑隨地圖縮放而變化"

circle-radius": {stops: [?[0, 0],[20, _pixelRadius]],base: 2},?

//設置圓的其他屬性

"circle-opacity": 0.5,

"circle-stroke-width": 1,

"circle-color": "#00f",

"circle-pitch-alignment": "map"}});

第二種方式:使用turf.js庫,根據(jù)中心點坐標,按照距離,設定圓周上點的個數(shù),根據(jù)地理距離,計算成串坐標,組合成polygon的形式進行加載,具體的參見turf.js類庫api:

http://turfjs.org/

mapbox-gl開發(fā)是講述如何從基礎(chǔ)到實際應用進行地圖開發(fā)的教程,不定時進行持續(xù)進行更新,如有疑問,公眾號留言進行討論。

https://mp.weixin.qq.com/s?__biz=MzU2ODYzNzc4OQ==&mid=2247486202&idx=1&sn=b9952e5d6125b21464d6d27dff80a169&chksm=fc8baac8cbfc23def27f958d2f63d84106e98232eea5b13334dfb79007b6dc80a7c7e0bfb5c5&token=635212041&lang=zh_CN#rd

mapbox-gl開發(fā)教程(十四):畫圓技巧的評論 (共 條)

分享到微博請遵守國家法律
渭源县| 高清| 美姑县| 和田县| 江口县| 大悟县| 北流市| 阳高县| 新干县| 阿合奇县| 南乐县| 都兰县| 威海市| 尖扎县| 柳河县| 武夷山市| 锦州市| 清原| 廊坊市| 弥渡县| 眉山市| 西乌珠穆沁旗| 满城县| 永泰县| 玛纳斯县| 九寨沟县| 塔河县| 皮山县| 德钦县| 昌图县| 萝北县| 靖远县| 永嘉县| 渭南市| 承德县| 盐池县| 花垣县| 南皮县| 瓦房店市| 孟津县| 和硕县|