第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

隱藏指定區(qū)域外的傳單功能

隱藏指定區(qū)域外的傳單功能

慕姐4208626 2023-02-24 15:33:24
我試圖在定義區(qū)域之外隱藏一些傳單功能。我有一張傳單地圖,將河流顯示為 RiverLayer 上的要素,還有一個用于在地圖當(dāng)前中心周圍繪制區(qū)域的 circleLayer。每條河流在我的數(shù)據(jù)庫中分為多個部分,我只檢索與當(dāng)前圓圈區(qū)域相交的部分。結(jié)果如下所示:河流顯示在該區(qū)域之外,因為我選擇了與它相交的部分。我可以在我的數(shù)據(jù)庫中選擇該區(qū)域內(nèi)的所有部分,但我會丟失不完全在該區(qū)域內(nèi)的部分。計算每個相關(guān)部分的交點以調(diào)整坐標(biāo)將是一種解決方案,但很復(fù)雜。事實上,我更愿意簡單地在客戶端隱藏這些溢出,但我找不到解決方案。傳單有可能做這樣的事情嗎?
查看完整描述

1 回答

?
牛魔王的故事

TA貢獻1830條經(jīng)驗 獲得超3個贊

這是使用 booleanWithin 和 lineSplit 函數(shù)使用 turfJS 的示例。

http://img1.sycdn.imooc.com//63f8688a00014dc006540437.jpg

我在一個簡單的基本 HTML 和 Vanilla JS 上做了這個例子。我在“河流”上添加了另一個線串來模擬外圈河流



var mymap = L.map('mapid').setView([43.63458105967136, 1.1613321304321291], 13);


L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {

    maxZoom: 20,

    attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors',

}).addTo(mymap);


var center = [43.63458105967136, 1.1613321304321291];

var radius = 1500;


// L.circle(center, radius, {

//     color: '#ff4081', fillColor: '#ff4081', fillOpacity: 0.5

// }).addTo(mymap);


var riverGeoJSON = [

    { "type": "Feature", "geometry": { "coordinates": [[1.159444487444759, 43.633815447205706], [1.160243520516838, 43.634633600388156], [1.160731009187281, 43.6350432633719], [1.161774921971743, 43.63541373375439], [1.162079879908259, 43.63564209781788], [1.162320030539753, 43.635959368371424], [1.162373764624914, 43.636409391647234], [1.161800286153361, 43.637212422659154], [1.160910734693605, 43.63832601539633], [1.160651867030764, 43.63886255455486], [1.160332394101095, 43.639317964879666], [1.159189872203288, 43.640743176542664], [1.158053840843969, 43.641810274789506], [1.156922548158863, 43.642651534145514], [1.155851918485514, 43.64349381183714], [1.155156982509935, 43.644214650781954], [1.15326441791592, 43.64594659208024], [1.152374775964331, 43.6470151231795], [1.151428904349222, 43.64790448439313], [1.151107886218696, 43.64840394819371]], "type": "LineString" } },

    { "type": "Feature", "geometry": { "coordinates": [[1.156570800342349, 43.632121495293006], [1.158291185472127, 43.63272397754135], [1.158901458643683, 43.633090727638866], [1.159444487444759, 43.633815447205706]], "type": "LineString" } },

    { "type": "Feature", "geometry": { "coordinates": [[1.168152938761366, 43.62917262321181], [1.167467920251437, 43.62939958202886], [1.166101976396903, 43.62960874939632], [1.164673843635074, 43.629863651007135], [1.163738326615552, 43.63021236020524], [1.163236303364402, 43.630566588076604], [1.162728104605807, 43.63119071739829], [1.161282685092185, 43.632253508072225], [1.160336935333006, 43.633151033736986], [1.159444487444759, 43.633815447205706]], "type": "LineString" } },

    {

        "type": "Feature",

        "properties": {},

        "geometry": {

            "type": "LineString",

            "coordinates": [

                [

                    1.0526275634765625,

                    43.550289946081115

                ],

                [

                    1.07940673828125,

                    43.63334186269

                ],

                [

                    1.0764884948730469,

                    43.6336524704596

                ]

            ]

        }

    }

];

// L.geoJSON(riverGeoJSON, {}).addTo(mymap);


var centerGeoJSON = [center[1], center[0]];

var radiusGeoJSON = radius / 1000;

var options = { steps: 50, units: 'kilometers' };

var circleGeoJSON = turf.circle(centerGeoJSON, radiusGeoJSON, options);


L.geoJSON(circleGeoJSON, {}).addTo(mymap);


var riverClipped = {}


for (let index = 0; index < riverGeoJSON.length; index++) {

    const feature = riverGeoJSON[index];

    var within = turf.booleanWithin(feature, circleGeoJSON);

    console.log({ within });

    var split = turf.lineSplit(feature, circleGeoJSON);

    console.log({ split });

    if (within && split.features.length === 0) {

        L.geoJSON(feature, {}).addTo(mymap);

    } else {

        L.geoJSON(split.features[0], {}).addTo(mymap);

    }



}



Circle 是用 turfJS 計算的,具有有效的 GeoJSON 特征。然后將此功能用作分離器。


當(dāng)直線完全在圓內(nèi)時,within函數(shù)返回true,split 函數(shù)不返回分割特征。


當(dāng)線完全在圓外時,within函數(shù)是false并且 split 函數(shù)不返回分割特征。


當(dāng)直線與圓相交時,within函數(shù)返回false,分割后的特征集合中的第一個特征就是圓內(nèi)的特征。


JSFiddle 上的完整源代碼:https ://jsfiddle.net/tsamaya/6sc58m7u/


查看完整回答
反對 回復(fù) 2023-02-24
  • 1 回答
  • 0 關(guān)注
  • 118 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號