国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【坐標(biāo)范圍計算顯示縮放級別zoom自適應(yīng)顯示地圖】

這篇具有很好參考價值的文章主要介紹了【坐標(biāo)范圍計算顯示縮放級別zoom自適應(yīng)顯示地圖】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一.數(shù)據(jù):

數(shù)據(jù)準(zhǔn)備

var points = [
    {"lng":116,"lat":40,"status":1,"id":50},
    {"lng":117,"lat":31,"status":1,"id":2},
    {"lng":116,"lat":34,"status":0,"id":3},
    {"lng":118,"lat":39,"status":0,"id":4},
    {"lng":110,"lat":35,"status":1,"id":5}
 ];

計算最大經(jīng)緯度,最小經(jīng)緯度。計算中心點。并調(diào)用getZoom()獲取顯示級別。

設(shè)置中心點和縮放大小
// 設(shè)置中心點和縮放大小  {maxLng, minLng, maxLat, minLat}
setMapCenterZoom(centerObjet){
    // 設(shè)置 縮放比例和
    const {maxLng, minLng, maxLat, minLat } =  centerObjet
    const zoom = this.getZoom(maxLng, minLng, maxLat, minLat);
    var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;
    var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;
    this.map.setCenter(( new TMap.LatLng(cenLat, cenLng)));
    this.map.setZoom(zoom)
},
獲取最大值
/**
* 獲取最大經(jīng)緯度
* @param getMaxLngAndLat {Array<Array<Object>>} [[{lat, lng}]]
* @return { Object } {lat lng}
*/
getMaxLngAndLat(paths){
    if(paths.length > 0){
        let maxLng = paths[0].lng;
        let minLng = paths[0].lng;
        let maxLat = paths[0].lat;
        let minLat = paths[0].lat;
        let res;
        for (let i = paths.length - 1; i >= 0; i--) {
            res = paths[i];
            if (res.lng > maxLng) maxLng = res.lng;
            if (res.lng < minLng) minLng = res.lng;
            if (res.lat > maxLat) maxLat = res.lat;
            if (res.lat < minLat) minLat = res.lat;
        }
        return {maxLng, minLng, maxLat, minLat }
    }
},
獲取縮放比例
//根據(jù)經(jīng)緯極值計算綻放級別。
getZoom (maxLng, minLng, maxLat, minLat) {
    var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"]//級別18到3。
    var pointA = new TMap.LatLng(maxLat,maxLng);  // 創(chuàng)建點坐標(biāo)A
    var pointB = new TMap.LatLng(minLat,minLng);  // 創(chuàng)建點坐標(biāo)B
    var distance = TMap.geometry.computeDistance([pointA,pointB]).toFixed(1);  //獲取兩點距離,保留小數(shù)點后兩位
    for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {
        if(zoom[i] - distance > 0){
            return 18-i+3;//之所以會多3,是因為地圖范圍常常是比例尺距離的10倍以上。所以級別會增加3。
        }
    };
},
地點坐標(biāo)計算中心點
/**
* 地點坐標(biāo)計算中心點
* @param geoCoordinateList {Array<Array<Object>>} [[{lat, lng}]]
* @return { Object } {lat lng}
*/
getCenterPoint(geoCoordinateList) {
    const geoCoordinateListFlat = geoCoordinateList.reduce((s, v) => {
        return (s = s.concat(v))
    }, [])
    const total = geoCoordinateListFlat.length
    let X = 0
    let Y = 0
    let Z = 0
    for (const g of geoCoordinateListFlat) {
        const lat = g.lat * Math.PI / 180
        const lon = g.lng * Math.PI / 180
        const x = Math.cos(lat) * Math.cos(lon)
        const y = Math.cos(lat) * Math.sin(lon)
        const z = Math.sin(lat)
        X += x
        Y += y
        Z += z
    }
    X = X / total
    Y = Y / total
    Z = Z / total
    const Lon = Math.atan2(Y, X)
    const Hyp = Math.sqrt(X * X + Y * Y)
    const Lat = Math.atan2(Z, Hyp)
    return { lng: Lon * 180 / Math.PI, lat: Lat * 180 / Math.PI }
}

完整代碼

方法調(diào)用
this.listData.forEach(item=>{
    let paths = []
    JSON.parse(item.xq_coordinates).forEach(mapItem=>{
        paths.push( new TMap.LatLng(mapItem.lat, mapItem.lng))
        if(this.listData.length == 1){
            initCenterList.push({lat:mapItem.lat,lng:mapItem.lng})
        }
    })
    const center = new TMap.geometry.computeCentroid(paths) // 獲取多邊形中心點
    centerList.push(center)
})
//  > 1 多個區(qū)域 | 單個區(qū)域
let centerObjet = centerList.length > 1 ? this.getMaxLngAndLat(centerList) : this.getMaxLngAndLat(initCenterList)
this.setMapCenterZoom(centerObjet )
方法封裝
// 設(shè)置中心點和縮放大小  {maxLng, minLng, maxLat, minLat}
setMapCenterZoom(centerObjet){
    // 設(shè)置 縮放比例和
    const {maxLng, minLng, maxLat, minLat } =  centerObjet
    const zoom = this.getZoom(maxLng, minLng, maxLat, minLat);
    var cenLng =(parseFloat(maxLng)+parseFloat(minLng))/2;
    var cenLat = (parseFloat(maxLat)+parseFloat(minLat))/2;
    this.map.setCenter(( new TMap.LatLng(cenLat, cenLng)));
    this.map.setZoom(zoom)
},
//根據(jù)經(jīng)緯極值計算綻放級別。
getZoom (maxLng, minLng, maxLat, minLat) {
        var zoom = ["50","100","200","500","1000","2000","5000","10000","20000","25000","50000","100000","200000","500000","1000000","2000000"]//級別18到3。
        var pointA = new TMap.LatLng(maxLat,maxLng);  // 創(chuàng)建點坐標(biāo)A
        var pointB = new TMap.LatLng(minLat,minLng);  // 創(chuàng)建點坐標(biāo)B
        var distance = TMap.geometry.computeDistance([pointA,pointB]).toFixed(1);  //獲取兩點距離,保留小數(shù)點后兩位
        for (var i = 0,zoomLen = zoom.length; i < zoomLen; i++) {
            if(zoom[i] - distance > 0){
                return 18-i+2;//之所以會多3,是因為地圖范圍常常是比例尺距離的10倍以上。所以級別會增加3。
            }
        };
},
// 獲取最大經(jīng)緯度
getMaxLngAndLat(paths){
    if(paths.length > 0){
        let maxLng = paths[0].lng;
        let minLng = paths[0].lng;
        let maxLat = paths[0].lat;
        let minLat = paths[0].lat;
        let res;
        for (let i = paths.length - 1; i >= 0; i--) {
            res = paths[i];
            if (res.lng > maxLng) maxLng = res.lng;
            if (res.lng < minLng) minLng = res.lng;
            if (res.lat > maxLat) maxLat = res.lat;
            if (res.lat < minLat) minLat = res.lat;
        }
        return {maxLng, minLng, maxLat, minLat }
    }
},

文章來源地址http://www.zghlxwxcb.cn/news/detail-794267.html

到了這里,關(guān)于【坐標(biāo)范圍計算顯示縮放級別zoom自適應(yīng)顯示地圖】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Python使用Matplotlib通過鼠標(biāo)交互實現(xiàn)縮放、移動以及線上點坐標(biāo)顯示功能

    Python使用Matplotlib通過鼠標(biāo)交互實現(xiàn)縮放、移動以及線上點坐標(biāo)顯示功能

    參考文章: 縮放:python 桌面軟件開發(fā)-matplotlib畫圖鼠標(biāo)縮放拖動_matplotlib縮放-CSDN博客 獲取點坐標(biāo)參考的文章忘了,侵權(quán)即刪

    2024年04月13日
    瀏覽(28)
  • 卡巴斯基 | 全球地區(qū)范圍網(wǎng)絡(luò)安全威脅實時數(shù)據(jù)顯示地圖

    卡巴斯基 | 全球地區(qū)范圍網(wǎng)絡(luò)安全威脅實時數(shù)據(jù)顯示地圖

    卡巴斯基 卡巴斯基反病毒軟件是世界上擁有最尖端科技的殺毒軟件之一,總部設(shè)在俄羅斯首都莫斯科,全名“卡巴斯基實驗室”,是國際著名的信息安全領(lǐng)導(dǎo)廠商之一,創(chuàng)始人為俄羅斯人尤金·卡巴斯基。 ????????公司為個人用戶、企業(yè)網(wǎng)絡(luò)提供反病毒、防黑客和反垃圾

    2024年02月11日
    瀏覽(27)
  • Qt6使用QChartView類與鼠標(biāo)事件實現(xiàn)波形的縮放、平移、坐標(biāo)軸單軸縮放與鼠標(biāo)懸停顯示點的數(shù)據(jù)

    Qt6使用QChartView類與鼠標(biāo)事件實現(xiàn)波形的縮放、平移、坐標(biāo)軸單軸縮放與鼠標(biāo)懸停顯示點的數(shù)據(jù)

    ? ? ? ? 說在前面,本人也是近段時間剛開始學(xué)習(xí)Qt,實現(xiàn)上述功能的方法可能并不是最優(yōu),寫此篇文章也是記錄下學(xué)習(xí)的過程,也與大家分享一下。(在此先描述,后面會附上代碼)(前面說的會比較基礎(chǔ)) ? ? ? ? 首先,要使用QChartView類得現(xiàn)在.pro文件中加入:(得確保

    2024年02月09日
    瀏覽(44)
  • 使用百度地圖坐標(biāo)在微信小程序中定位顯示

    使用百度地圖坐標(biāo)在微信小程序中定位顯示

    一.需求描述:設(shè)備在上線時需要在上線點記錄所在地點的坐標(biāo)和位置描述信息 分別需要實現(xiàn)三個功能 1. 根據(jù)坐標(biāo)點顯示位置信息 , 圖1 中的紅色坐標(biāo)點跳轉(zhuǎn)到 圖2 時,在騰訊地圖上標(biāo)出所在坐標(biāo)點,并顯示地點信息; 2. 定位當(dāng)前所在位置 :點擊藍(lán)色圖標(biāo),會定位當(dāng)前所在位

    2024年02月09日
    瀏覽(94)
  • 高德地圖通過畫面中的一個覆蓋物設(shè)置圖中心點和zoom

    需要將這個覆蓋物置于地圖中間且不超過地圖邊界的放至最大 計算覆蓋物中心點,定為地圖中心點 計算覆蓋物的最大經(jīng)緯度,和最小經(jīng)緯度,測算出實際最長距離,根據(jù)距離與zoom對應(yīng)關(guān)系設(shè)置zoom

    2024年02月09日
    瀏覽(27)
  • Openlayers實戰(zhàn):自定義放大縮小,顯示zoom等級

    Openlayers實戰(zhàn):自定義放大縮小,顯示zoom等級

    Openlayers地圖中,默認(rèn)的zoom組件是在左上角,這個組件很重要,方便大家來操控地圖。在實際項目中,大家往往要改寫這個組件,通常會放置到右下角,方便鼠標(biāo)操作。 在我們的實戰(zhàn)課程里,自定義了放大縮小,并增加了顯示zoom等級的功能,實際的項目中往往都是這樣辦理的

    2024年02月13日
    瀏覽(25)
  • 前端大屏自適應(yīng)縮放

    2024年02月13日
    瀏覽(13)
  • 前端實現(xiàn)大屏縮放自適應(yīng)屏幕

    在前端實現(xiàn)大屏縮放自適應(yīng)屏幕的過程中,可以使用以下幾種方式: 使用CSS3的縮放屬性(transform: scale())來縮放頁面元素,以適應(yīng)不同大小的屏幕??s放后,需要使用CSS來重新布局和調(diào)整頁面元素的尺寸和位置。 使用CSS的@media查詢來根據(jù)不同的屏幕大小調(diào)整元素的樣式和布

    2024年02月20日
    瀏覽(18)
  • MATLAB坐標(biāo)設(shè)置:范圍、主次坐標(biāo)等常見問題

    MATLAB坐標(biāo)設(shè)置:范圍、主次坐標(biāo)等常見問題

    (1)打開次刻度: (2)設(shè)置主刻度: (3)設(shè)置次刻度: (4)設(shè)置刻度線長度(高度和寬度):第一個元素是二維視圖中的刻度線長度,第二個元素是三維視圖中的刻度線長度。指定值是以可見的 x 軸、y 軸或 z 軸中最長線條為基準(zhǔn)進(jìn)行歸一化的值。詳見Axes 屬性-坐標(biāo)區(qū)的

    2024年02月12日
    瀏覽(26)
  • 【uniapp 圖片展示自適應(yīng),等比例縮放】

    【uniapp 圖片展示自適應(yīng),等比例縮放】

    在uniapp頁面展示中會遇到圖片展示問題,等比縮放或者自適應(yīng)view大小。 只固定調(diào)整圖片的寬度(或者高度)而圖片的高度(或者寬度)可以自動根據(jù)圖片原始比例調(diào)節(jié)的情況,這種情況下我們可以通過使用image標(biāo)簽的mode屬性控制。 組件默認(rèn)寬度 320px、高度 240px; 注意uniap

    2024年02月12日
    瀏覽(79)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包