【问题标题】:Show multiple great circles on mapbox with turf.js使用 turf.js 在 mapbox 上显示多个大圆圈
【发布时间】:2021-06-13 13:34:41
【问题描述】:

我正在尝试在同一地图容器中的标记之间添加多条大圆线。我设法在 turf.js 中用greatCircle 展示了一个。

for(var i = 0; i < 2 ;i++) {

    var getStart = json.features[0].geometry.coordinates[0];
    var getEnd = json.features[0].geometry.coordinates[1];

    //console.log(getStart) 
    //console.log(getEnd)

    var start = turf.point(getStart);
    var end = turf.point(getEnd);

    var data = turf.greatCircle(start, end);

    console.log(data) 
}

是否可以列出所有这些并应用 Turf.js?

这是我的JsFiddle。

【问题讨论】:

  • 抱歉,列出所有什么? “多条轨迹”是什么意思?
  • 嗨,史蒂夫,是的,geojson 中列出的所有轨迹并在每个轨迹上都应用了 greatCircle。另见 JsFiddle。

标签: javascript geojson mapbox-gl-js turfjs


【解决方案1】:

给map.addSource 一个新的FeatureCollection,其中的特征是来自草皮功能的大圆圈。有一个 helper function 在草皮上。

我已将您的循环逻辑包含在一个函数中,该函数返回大圆圈的FeatureCollection:

function getGreatArcFc() {
  var data = [];
  for (var i = 0; i < json.features.length; i++) {
    var feature = json.features[i];
    var getStart = feature.geometry.coordinates[0];
    var getEnd = feature.geometry.coordinates[1];
    var start = turf.point(getStart);
    var end = turf.point(getEnd);
    data.push(turf.greatCircle(start, end));
  }
  return turf.featureCollection(data);
}

map.on('load', function() {
    map.addSource('route', {
        "type": "geojson",
        "data": getGreatArcFc()
    });
  map.addLayer({
    "id": "route",
    "source": "route",
    "type": "line",
    "paint": {
      "line-width": 1,
      "line-color": "#000000"
    }
  });
});

Updating your fiddle 与该逻辑给出:

在屏幕截图中有点难以辨认,但我认为伦敦到纽约和伦敦到波士顿之间可能存在单独的大圆圈?

【讨论】:

  • 嗨罗宾,这真的很好,正是我想要的!非常感谢您的帮助!
  • 如果它符合您的要求,请随时接受/投票 - 您可以点击一个绿色的勾号按钮
猜你喜欢
  • 1970-01-01
  • 2021-12-26
  • 2015-08-22
  • 2017-10-18
  • 2021-07-30
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2022-08-19
相关资源
最近更新 更多