从例如导入标记的属性txt文件?

时间:2019-06-25 09:10:58

标签: javascript leaflet

首先,如果标签有误,请更正标签。不确定这属于哪里。
我想在运行传单的OpenStreetMap中添加标记。我将它们手动一个接一个地添加到我的html文件中,但是看起来很糟糕。我已经对如何使用for循环添加它们有了一些想法。但是我现在的问题是我不想为我需要的每个标记创建一个新的数组。我看到有人在用桌子,并从中获取信息。不记得那是什么,在哪里。

我的标记如下所示:Name = L.marker([lat,lon]).addTo(overlay).bindPopop("Info for marker")
现在,可以在表格中写入表格了一个文本文件,第一行显示“名称,纬度,经度,覆盖,信息”,下一行提供属性,JS或任何其他模块获取我需要的信息?如果是这样,怎么办?如果没有,那怎么办?^^

1 个答案:

答案 0 :(得分:1)

您可能要考虑将数据放入JavaScript对象列表(在本例中为JSON)。编写起来很容易,不需要解析。

const markers = [
  {lat: 123, lon: 456, text: 'Info'},
  {lat: 123, lon: 456, text: 'Info'},
  {lat: 123, lon: 456, text: 'Info'},
  {lat: 123, lon: 456, text: 'Info'},
  {lat: 123, lon: 456, text: 'Info'},
];
markers.forEach(({lat, lon, text}) => L.marker([lat, lon]).addTo(overlay).bindPopop(text));

如果您真的想要文本格式,我们也可以这样做...

const markersText = `
123,456,Info
123,456,Info
123,456,Info
123,456,Info
`;
// Converts the above text format into a similar `markers` list-of-objects:
const markers = markersText
  .split("\n") // split by newlines
  .filter(Boolean) // remove empty lines
  .map(line => line.trim().split(",")) // split each line by comma
  .map(([lat, lon, text]) => ({  // map the arrays to objects
    lat: parseFloat(lat),
    lon: parseFloat(lon),
    text,
  }));