我使用Folium在地图上绘制多颗卫星的地面轨迹(最多5颗卫星)。Folium的TimeStampedGeoJson插件附带一个timeDimension条,允许您分别控制地图上的每个标记(见下面屏幕截图的左下角)。
我想把所有这些timeDimensionControl合并成一个,因为所有卫星的轨迹都是在同一时间跨度上传播的,而多个timeDimensionControl条覆盖了太多的地图。
我对javascript很陌生,也不了解如何解决这个问题。下面是生成这些timeDimensionControl条的代码:
L.Control.TimeDimensionCustom = L.Control.TimeDimension.extend({
_getDisplayDateFormat: function(date){
var newdate = new moment(date);
console.log(newdate)
return newdate.format("YYYY-MM-DD HH:mm:ss");
}
});
map_a5d837d7e39ab8f4f2d689152da44b7e.timeDimension = L.timeDimension(
{
period: "PT1M",
}
);
var timeDimensionControl = new L.Control.TimeDimensionCustom(
{"autoPlay": true, "loopButton": false, "maxSpeed": 1.1, "minSpeed": 1, "playerOptions": {"loop": true, "startOver": true, "transitionTime": 1000}, "position": "bottomleft", "timeSliderDragUpdate": false}
);
map_a5d837d7e39ab8f4f2d689152da44b7e.addControl(this.timeDimensionControl);
var geoJsonLayer = L.geoJson({"type": "FeatureCollection", "features": [{"type": "Feature", "geometry": {"type": "Point", "coordinates": [174.61069467391732, 0.9658165798710256]}, "properties": {"times": ["2022-08-15T00:01:09"],...})
var timestamped_geo_json_25779c6b0b60ac5707b59da8f42211c7 = L.timeDimension.layer.geoJson(
geoJsonLayer,
{
updateTimeDimension: true,
addlastPoint: false,
duration: "PT1M",
}
).addTo(map_a5d837d7e39ab8f4f2d689152da44b7e);
对于每个卫星,这些代码都被复制到Folium生成的map.html
文件中。我想只有一个timeDimensionControl条来控制地图上的所有卫星。
对于如何做到这一点,有什么建议吗?
提前谢谢你的回答。
编辑:这是我发现的一个链接,它提示了如何解决这个问题。
发布于 2022-08-25 12:03:02
答案在一定程度上取决于问题中提到的链接。
timeDimension
和一个 timeDimensionControl
only,并将其添加到地图中。timeDimension.Layer
,您可以用一个timeDimensionControl
控制所有的标记。https://stackoverflow.com/questions/73386025
复制相似问题