我的编码知识几乎没有,但我正在努力学习 .

我一直在修改Leaflet TimeDimension示例9中的代码:http://apps.socib.es/Leaflet.TimeDimension/examples/example9.html尝试在Leaflet中创建的 Map 上显示动物随时间的移动 .

我有一个自编写的GPX文件和KML轨道,其中包含了动物的个体和随着时间的推移 . 我还添加了时间维度,以便我可以播放时间滑块,我的自定义图标会按照我的意愿在 Map 上移动 . 但是,我现在碰壁了 .

我希望能够点击标记(在滑块持续时间[标记位置移动]期间的任何阶段)并在弹出窗口中显示有关该标记的信息 . 如果存在实际标记(marker.bindPopup())但是标记是从GPX文件中的轨道创建的,那么这将很容易:

GPX文件中动物跟踪的示例:

...
<trk><name>THE DESCRIPTION I WANT TO DISPLAY IN A POPUP</name><number>2</number><trkseg>
    <trkpt lat="-40" lon="120"><ele>2</ele><time>2018-01-06T10:09:57Z</time></trkpt>
    <trkpt lat="-41" lon="122"><ele>2</ele><time>2018-01-21T16:45:57Z</time></trkpt>
</trkseg></trk>
...

我不知道如何调用其中一个曲目的名称或描述,并在弹出窗口中绑定信息(在单个GPX文件中有多组曲目[每个曲目都有唯一的名称和描述]) .

我一直在研究两种主要的解决方案(我认为这可能是可能的),但不能完全开始工作 .

它说:

如果要显示有关GPX轨道的其他信息,可以在“已加载”事件处理程序中执行此操作,在GPX对象上调用以下方法之一e.target:get_name():返回GPX轨道的名称

这是演示代码:https://git.nxfifteen.rocks/rocks/core/raw/056ddab410a40496a917cb150be8d92f4cc205cf/map.php但这个代码远远超出了我的理解,我无法弄清楚如何让它工作

我试过了:

function onClick(e) {
alert(this.get_name());
}

但它不起作用(不确定它是否朝着正确的方向前进) .

  • 在customLayer中以某种方式使bindPopup链接到GPX轨道的名称

以下是我的.js文件中调用和加载GPX和KML层的代码部分:

var customLayer = L.geoJson(null, {
pointToLayer: function (feature, latLng) {
    if (feature.properties.hasOwnProperty('last')) {
        return new L.Marker(latLng, {
            icon: icon
        }).bindPopup ("yo");
    }
    return L.circleMarker(latLng).bindPopup ("hey");
}
});

var gpxLayer = omnivore.gpx('data/data.gpx', null, customLayer).on('ready', function(e) {
map.fitBounds(gpxLayer.getBounds(), {
    paddingTopLeft: [160, 160],
    paddingBottomRight: [100, 100]
});
});

var gpxTimeLayer = L.timeDimension.layer.geoJson(gpxLayer, {
updateTimeDimension: true,
addlastPoint: true,
waitForReady: true
});

var kmlLayer = omnivore.kml('data/data.kml');
var kmlTimeLayer = L.timeDimension.layer.geoJson(kmlLayer, {
updateTimeDimension: true,
addlastPoint: true,
waitForReady: true
});

gpxTimeLayer.addTo(map);

在使用杂食动物链接到GPX轨道的变量:customLayer中,我可以添加一个可点击的弹出窗口,向每个动物标记显示“yo” . 我可以在任何时候暂停时间滑块,当我点击标记“哟”popus(几乎我需要) .

我想知道是否有某种方法,而不是说“哟”,告诉它返回已被点击的轨道的名称,以便每个标记将显示其各自的名称(名称将包含我想要的描述它显示) .

对不起,这是一个冗长的问题,并提前感谢您提出任何解决方案,提示或指示我的尝试是否只需要一些调整,或者是否有更好的解决方案 .