从点创建GPX文件并使用javascript下载

编程入门 行业动态 更新时间:2024-09-26 04:20:14

从点创建GPX<a href=https://www.elefans.com/category/jswz/34/1771438.html style=文件并使用javascript下载"/>

从点创建GPX文件并使用javascript下载

我想通过纬度和经度点数组创建gpx文件。我的数组看起来像这样:

const lineSegments = [[[34.12877, -117.65464], [34.12878, -117.65391]], ....];

而且我想变成这样的gpx文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<gpx version="1.1" creator="" xmlns="">
  <metadata>
    <name>0.62 mi route</name>
    <link href="">
      <text>My Website</text>
    </link>
    <time>2020-04-22T20:10:34.445Z</time>
    <copyright author="My Web Site, OpenStreetMap Contributors">
      <year>2020</year>
    </copyright>
  </metadata>
  <rte>
    <name>0.62 mi route</name>
    <rtept lat="34.12877" lon="-117.65464"/>
    <rtept lat="34.12878" lon="-117.65391"/>
    <rtept lat="34.12878" lon="-117.65368"/>
    <rtept lat="34.12878" lon="-117.6531"/>
    <rtept lat="34.12878" lon="-117.65231"/>
    <rtept lat="34.12878" lon="-117.65142"/>
    <rtept lat="34.12879" lon="-117.65127"/>
    <rtept lat="34.12879" lon="-117.65111"/>
    <rtept lat="34.12879" lon="-117.65045"/>
    <rtept lat="34.12879" lon="-117.64991"/>
    <rtept lat="34.12879" lon="-117.6493"/>
    <rtept lat="34.12879" lon="-117.64872"/>
    <rtept lat="34.1288" lon="-117.64816"/>
    <rtept lat="34.1288" lon="-117.64758"/>
    <rtept lat="34.1288" lon="-117.64583"/>
    <rtept lat="34.1288" lon="-117.64514"/>
    <rtept lat="34.1288" lon="-117.64485"/>
    <rtept lat="34.12879" lon="-117.64477"/>
    <rtept lat="34.12879" lon="-117.64411"/>
    <rtept lat="34.1286" lon="-117.64411"/>
  </rte>
</gpx>

我不太确定如何编写.gpx文件。有什么建议吗?

回答如下:

我的解决方案:

const createXmlString = (lines: number[][][]): string => {
  let result = '<gpx xmlns="http://www.topografix/GPX/1/1" xmlns:xsi="http://www.w3/2001/XMLSchema-instance" xsi:schemaLocation="http://www.topografix/GPX/1/1 http://www.topografix/GPX/1/1/gpx.xsd" version="1.1" creator="runtracker"><metadata/><trk><name></name><desc></desc>'
  result += lines.reduce((accum, curr) => {
    let segmentTag = '<trkseg>';
    segmentTag += curr.map((point) => `<trkpt lat="${point[1]}" lon="${point[0]}"><ele>${point[2]}</ele></trkpt>`).join('');
    segmentTag += '</trkseg>'

    return accum += segmentTag;
  }, '');
  result += '</trk></gpx>';
  return result;
}

const downloadGpxFile = (
  lines: number[][][],
  distance: number[],
  units: 'miles' | 'kilometers'
) => {
  const xml = createXmlString(lines);
  const url = 'data:text/json;charset=utf-8,' + xml;
  const link = document.createElement('a');
  link.download = `${distance[distance.length - 1]}-${units}.gpx`;
  link.href = url;
  document.body.appendChild(link);
  link.click();
};

第一个函数通过遍历每行并为行中的每个点创建标签来创建表示xml的字符串。第二个函数创建一个链接标签,该标签的href属性代表xml字符串,而download属性则包含download属性。附加链接,然后单击它以下载文件。

更多推荐

从点创建GPX文件并使用javascript下载

本文发布于:2024-05-07 11:26:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1756028.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:文件   GPX   javascript

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!