亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Openlayers實現(xiàn)長度測量的方法

 更新時間:2024年11月07日 11:28:40   作者:Jinuss  
在Openlayers中,使用ol/sphere模塊的getDistance函數(shù)可以計算兩點間的大圓距離,繪制線路時,通過監(jiān)聽繪制事件和幾何對象的變化,可實時更新距離,同時getLength函數(shù)幫助獲取整條線路的長度,這些功能主要用于地理信息系統(tǒng)中的距離測量和地圖制作

概述

在 Openlayers 中,計算兩點之間的距離,通常會用到ol/sphere模塊。ol/sphere模塊主要用于處理與球體(特別是地球球體)相關的數(shù)學和幾何計算。而長度測量主要用到ol/sphere中的getDistance函數(shù)。

getDistance函數(shù)用于計算地球表面兩點之間的距離,通常用于經(jīng)緯度坐標。計算的是球面上兩點之間的大圓距離(即通過球體表面兩個點的最短路徑距離)。其返回值的單位是米 (m)

實踐

效果展示

繪制

結果

實現(xiàn)思路

繪制曲線可以采用 Openlayers 中的ol/interaction模塊的Draw

實例化 Draw

this.draw = new Draw({
  source: this.vectorLayer?.getSource(),
  type: "LineString",
  style: this.lineStyle,
});
this.map.addInteraction(this.draw);

監(jiān)聽 this.draw 的 drawstart 方法

this.draw.on("drawstart", this.handleMeasureLineStart.bind(this));

handleMeasureLineStart回調(diào)方法中,接受一個evt對象,該對象包含繪制的feature以及坐標coordinate。效果圖一中,在選擇第一個點后,拖動鼠標,會實時顯示當前鼠標表示的點與起點之間的距離,這個邏輯就是在該回調(diào)中實現(xiàn)的。

監(jiān)聽繪制的 feature 的 change 事件

this.listenGeometryChange = feature.getGeometry().on("change", (evt) => {
  /*..處理邏輯..*/
});

通過evt.target獲取當前幾何對象geometry,通過該幾何對象的getFirstCoordinate()方法獲取第一個點標記為起點,getLastCoordinate()方法獲取最后一個點標記為終點。而繪制路線的轉(zhuǎn)折點可以通過幾何對象的getCoordinates()方法獲取,這個方法包含首尾兩端的點。

計算坐標距離

最前面提到通過ol/sphere的getDistance()方法計算兩點之間的距離,而在上一步中可以得到所有折線段的坐標,循環(huán)調(diào)用getDistance方法,(需要注意的是如果當前坐標系不是經(jīng)緯度的話,就需要轉(zhuǎn)換)。就可以得到每段折線的距離。相加就是總長。但實際上例子中的總長是調(diào)用sphere.getLength(geometry)方法獲取的,參數(shù)是幾何對象。

  • sphere.getLength()方法是用于計算球體表面上沿大圓弧的距離。其參數(shù)可以是ol/geom/LineString | ol/geom/Polygon | ol/geom/MultiLineString | ol/geom/MultiPolygon的實例。
  • geometry 是一個表示線(如 LineString)或面(如 Polygon)的幾何對象。該幾何對象可以是包含多個點的路徑,或者是一個閉合的面。
  • 對于一個 LineString(線),getLength 計算的是從第一個點到最后一個點之間的球面大圓距離。
  • 對于 Polygon(面),getLength 計算的是邊界線的球面長度。如果是多邊形,則計算其外環(huán)的長度。

總結

Openlayers 中提供了內(nèi)置模塊ol/sphere用于計算距離,繪制幾何對象時,可以通過監(jiān)聽獲取當前幾何對象的關鍵值。

到此這篇關于Openlayers實現(xiàn)長度測量的文章就介紹到這了,更多相關Openlayers長度測量內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • es6函數(shù)之嚴格模式用法實例分析

    es6函數(shù)之嚴格模式用法實例分析

    這篇文章主要介紹了es6函數(shù)之嚴格模式用法,結合實例形式分析了es6函數(shù)嚴格模式的定義、用法及操作注意事項,需要的朋友可以參考下
    2020-03-03
  • html+js實現(xiàn)動態(tài)顯示本地時間

    html+js實現(xiàn)動態(tài)顯示本地時間

    顯示本地時間的方法有很多,在本文將為大家介紹下如何使用html+js實現(xiàn)動態(tài)顯示本地時間,感興趣的朋友可以了解下
    2013-09-09
  • JS中循環(huán)字符串拼接時加換行問題

    JS中循環(huán)字符串拼接時加換行問題

    這篇文章主要介紹了JS中循環(huán)字符串拼接時加換行問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • js計時事件實現(xiàn)圓形時鐘

    js計時事件實現(xiàn)圓形時鐘

    這篇文章主要為大家詳細介紹了js計時事件實現(xiàn)圓形時鐘,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • 小程序?qū)崿F(xiàn)上下切換位置

    小程序?qū)崿F(xiàn)上下切換位置

    這篇文章主要為大家詳細介紹了小程序?qū)崿F(xiàn)上下切換位置,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • javascript使用正則獲取url上的某個參數(shù)

    javascript使用正則獲取url上的某個參數(shù)

    使用indexOf取得?之后的參數(shù),以&使split進行分割成數(shù)組,下面展示了一個從url上獲取名為MenuCode參數(shù)的過程
    2014-09-09
  • JavaScript 變量、作用域及內(nèi)存

    JavaScript 變量、作用域及內(nèi)存

    這篇文章主要介紹了JavaScript 變量、作用域及內(nèi)存,需要的朋友可以參考下
    2015-04-04
  • 淺析JS中回調(diào)函數(shù)的使用

    淺析JS中回調(diào)函數(shù)的使用

    在JavaScript中,回調(diào)函數(shù)是一種常見的編程模式,用于處理異步操作和事件處理,這篇文章主要為大家介紹了回調(diào)函數(shù)的使用場景和注意事項,需要的可以參考下
    2023-08-08
  • javascript實現(xiàn)隨機讀取數(shù)組的方法

    javascript實現(xiàn)隨機讀取數(shù)組的方法

    這篇文章主要介紹了javascript實現(xiàn)隨機讀取數(shù)組的方法,涉及javascript隨機數(shù)及針對數(shù)組操作的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-08-08
  • JavaScript使用Promise封裝Axios進行高效開發(fā)

    JavaScript使用Promise封裝Axios進行高效開發(fā)

    這篇文章主要介紹了JavaScript使用Promise封裝Axios進行高效開發(fā),Axios是一個基于Promise的HTTP庫,它可以幫助我們更方便地發(fā)起HTTP請求,并且提供了許多高級功能,感興趣的同學可以參考下文
    2023-05-05

最新評論