【问题标题】:Why does node Circle to Polygon module returns oval/ellipse instead of a shape like circle?为什么节点圆形到多边形模块返回椭圆/椭圆而不是圆形?
【发布时间】:2018-09-27 12:31:57
【问题描述】:

我正在使用 npm 包 circle-to-polygon,我编写了以下代码来返回一个近似圆形的多边形。

const circleToPolygon = require('circle-to-polygon');

let coordinates = [28.612484207825005, 77.23574939044147]; //lat, lng

let radius = 311;      
let numberOfEdges = 32;    
let polygon = circleToPolygon(coordinates, radius, numberOfEdges);

let coords = polygon.coordinates;

当我使用坐标并使用 Google Maps JS API 创建多边形形状时,它显示出类似椭圆的形状(2 个末端彼此相距很远,两个末端相距很近,希望您理解)。

事实上,可以说的距离差异大致是4:1的比例。所以它永远不是更接近圆形的形状。

有什么问题,还是应该故意这样做?

【问题讨论】:

    标签: javascript node.js google-maps npm geojson


    【解决方案1】:

    @Vikas Kumar,这似乎是一个棘手的问题。我怀疑圆到多边形排序坐标的方式和谷歌地图api的方式是相反的,至少基于文档。你可以尝试一件事。将 lon、lat(例如,(77,28))输入到圆形到多边形 api,然后当您获得输出时,将它们反转(例如,(28,77))并输入到谷歌地图 api。

    【讨论】:

      【解决方案2】:

      npm 中对包的描述是这样的:

      GeoJSON 规范不支持圆圈。如果你想创建一个 代表一个圆圈的区域,最好的办法是创建一个多边形 大致近似于圆。在数量限制内 边缘变得无限,你的多边形将匹配一个圆。

      【讨论】:

      • 我读到了。这并不意味着它会输出椭圆形或椭圆形。它会给你一个像圆一样的多边形。即使你使用无限边缘,它只会增加平滑度,而不是整体形状。
      • 此链接可能提供解释:forbes.com/sites/startswithabang/2016/02/27/…
      【解决方案3】:

      @Vikas Kumar,我刚刚又看了一遍。我注意到圆到多边形 API 的使用有一个错误。我认为这是您面临的问题的原因。请反转调用本身的坐标。

      而不是

      let coordinates = [28.612484207825005, 77.23574939044147]; //lat, lng
      

      试试

      let coordinates = [77.23574939044147, 28.612484207825005]; //lng, lat
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        相关资源
        最近更新 更多