javascript - 如何在Leaflet中绘制天梭椭圆(天梭指示线)

标签 javascript leaflet openlayers ellipse

OpenLayers支持tissot's ellipses本地by adding a sphere to the circular() method .

不幸的是Leaflet L.circle()不支持此类功能。

如何用Leaflet绘制tissot的椭圆?

最佳答案

编辑3:

使用 leaflet-geodesy 的新命题这似乎非常适合您的需求。它不受 Turf 错误的影响(请参阅下面的编辑 2)。

API 非常简单:

LGeo.circle([51.441767, 5.470247], 500000).addTo(map);

(中心位置以[纬度,经度]度为单位,半径以米为单位)

演示:http://jsfiddle.net/ve2huzxw/61/

与 nathansnider 的解决方案进行快速比较:http://fiddle.jshell.net/58ud0ttk/2/

(表明两个代码产生相同的结果区域,唯一的区别在于用于近似区域的段数)

编辑:一个很好的页面,将 Leaflet-geodesy 与标准 L.Circle 进行比较:https://www.mapbox.com/mapbox.js/example/v1.0.0/leaflet-geodesy/

<小时/>

编辑2:

不幸的是,草皮使用 JSTS Topology Suite建立缓冲区。看来 JSTS 中的此操作不适合像地球表面这样的非平面几何形状。

已报告该错误 here截至目前,主 Turf 库还没有完整的解决方法。

因此下面的答案(编辑 1)会产生错误的结果

参见nathansnider's answer了解围绕点构建缓冲区的解决方法。

<小时/>

编辑1:

您可以使用 Turf 轻松构建所描述的多边形。 。它提供了 turf.buffer 方法,该方法可以在给定要素(可以是一个简单的点)周围创建具有指定距离的多边形。

因此您可以简单地执行以下操作:

var pt = {
  "type": "Feature",
  "properties": {},
  "geometry": {
    "type": "Point",
    "coordinates": [5.470247, 51.441767]
  }
};

var buffered = turf.buffer(pt, 500, 'kilometers');

L.geoJson(pt).addTo(map);
L.geoJson(buffered).addTo(map);

演示:http://jsfiddle.net/ve2huzxw/41/

<小时/>

原答案:

不幸的是,目前似乎没有 Leaflet 插件可以做到这一点。

目前还不清楚 Tissot 指示线应该代表什么:

  1. 一个真正的椭圆,代表无限小圆的变形(即单个点的变形),或
  2. 类似圆形的形状,表示地球表面上有限大小的圆的变形,就像您链接到的 OpenLayers 演示一样?

在该演示中,EPSG:4326 中的形状不是椭圆形,与形状的另一半相比,垂直轴的长度在较高纬度处减小。

如果您正在寻找第二个选项,那么您将必须手动构建一个表示球体与地球表面相交的多边形。如果我的理解是正确的,这就是 OL demo 所做的。如果这是您的选择,也许您可​​以在那里生成多边形并将它们作为 GeoJSON 特征导入到 Leaflet 中? :-)

关于javascript - 如何在Leaflet中绘制天梭椭圆(天梭指示线),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526678/

相关文章:

javascript - 如何在 OpenLayers 5 中仅发送修改后的几何图形?

javascript - 具有多个句柄的 Jquery Draggable

javascript - onclick 在特定复选框上显示一个button.js jquery

javascript - 在 ExtJS 中,如何将两个字段集并排放置在具有 hbox 布局的面板中?

reactjs - 当中心状态改变时,React 传单中心属性不会改变

javascript - openlayers 和谷歌地理编码器

javascript - 将变量从多个 javascript 函数传递给另一个函数?

javascript - 多个 choropleth 图层应用不同的样式

html - 在 wordpress 中嵌入 R 传单 map

javascript - 更改开放图层中矢量要素的绘制属性