簡體   English   中英

Leaflet.js 圓到多邊形的轉換

[英]Leaflet.js Circle to Polygon Conversion

我正在使用 Leaflet.js 來保存覆蓋圖,並為用戶提供使用多邊形或圓形的選項。

為了使所有對象保持相同的格式,我在保存之前將圓轉換為多邊形。

但是,當我重新加載圓圈時,它是橢圓形的。

我知道這是由於地球的曲線,但我不確定如何糾正我的方法以考慮到這一點? (我已經看過但找不到任何能提供我所追求的解決方案的東西)。

主要問題是我在下面使用的 javascript 方法,因為它沒有考慮到地球的曲線。

 // GenerateCirlcePolygon - Creates Circle from 360 line Segments 
 function GenerateCirlcePolygon(origin, radius) {
     var earthRadius = 6371;

     //latitude in radians
     var lat = (origin.Latitude * Math.PI) / 180;

     //longitude in radians 
     var lon = (origin.Longitude * Math.PI) / 180;
     //angular distance covered on earth's surface
     var d = parseFloat(radius) / earthRadius;
     polyPoints = new Array();

     for (i = 0; i <= 360; i++) {
         var point = new VELatLong(0, 0)
         var bearing = i * Math.PI / 180; //rad
         point.Latitude = Math.asin(Math.sin(lat) * Math.cos(d) + Math.cos(lat) * Math.sin(d) * Math.cos(bearing));
         point.Longitude = ((lon + Math.atan2(Math.sin(bearing) * Math.sin(d) * Math.cos(lat), Math.cos(d) - Math.sin(lat) * Math.sin(point.Latitude))) * 180) / Math.PI;
         point.Latitude = (point.Latitude * 180) / Math.PI;
         polyPoints.push(point);
     }

任何建議都會很棒。

您可以使用來自 Leaflet-geoman 的內置leaflet-geomanL.PM.Utils.circleToPolygon(circle, sides)

L.PM.Utils.circleToPolygon(circle, 60).addTo(map)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM