首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Android中解析本地gpx文件

在Android中解析本地gpx文件
EN

Stack Overflow用户
提问于 2013-09-06 14:59:10
回答 4查看 7.2K关注 0票数 8

我遵循下面的示例来解析Android:http://android-coding.blogspot.pt/2013/01/get-latitude-and-longitude-from-gpx-file.html中的本地GPX文件

所有的工作都可以访问"lat“和"long”,但我也需要获得"ele“值,但我的所有触角都没有成功。有人能给我点线索吗?

提前感谢!最好的问候,NR。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-09-06 15:27:25

在第一个循环中有"Node = nodelist_trkpt.item(i);“。从此节点获取子元素,运行这些子元素。

例如:

代码语言:javascript
运行
复制
NodeList nList = node.getChildNodes();
for(int j=0; j<nList.getLength(); j++) {
    Node el = nList.item(j);
    if(el.getNodeName().equals("ele")) {
     System.out.println(el.getTextContent());
  }
}
票数 4
EN

Stack Overflow用户

发布于 2016-01-24 11:09:06

我将把我的GPX解析库添加到这些答案中:https://github.com/ticofab/android-gpx-parser。它提供了两种解析GPX文件的方法:获得/创建GPXParser对象(下面示例中的mParser)之后,可以直接解析GPX文件。

代码语言:javascript
运行
复制
Gpx parsedGpx = null;
try {
    InputStream in = getAssets().open("test.gpx");
    parsedGpx = mParser.parse(in);
} catch (IOException | XmlPullParserException e) {
    e.printStackTrace();
}
if (parsedGpx == null) {
    // error parsing track
} else {
    // do something with the parsed track
}

也可以解析远程文件:

代码语言:javascript
运行
复制
mParser.parse("http://myserver.com/track.gpx", new GpxFetchedAndParsed() {
    @Override
    public void onGpxFetchedAndParsed(Gpx gpx) {
        if (gpx == null) {
            // error parsing track
        } else {
            // do something with the parsed track
        }
    }
});

欢迎捐款。

票数 5
EN

Stack Overflow用户

发布于 2013-09-06 15:15:15

更新:我还添加了解析"ele“元素的,因此这段代码可以与您的需求相匹配。

我将提出不同的方法:https://gist.github.com/kamituel/6465125

在我的方法中,我没有创建一个包含所有跟踪点的ArrayList (这是在您发布的示例中完成的)。这样的列表可以消耗相当多的内存,这在Android上是个问题。

我甚至放弃了使用regex解析来避免分配太多的对象(这会导致垃圾收集器运行)。

因此,运行16 12堆大小的Java,解析带有600多个点的GPX文件,垃圾收集器将只运行12次。我相信一个可以降低,但我还没有对它进行重大的优化。

用法:

代码语言:javascript
运行
复制
GpxParser parser = new GpxParser(new FileInputStream(file));
TrkPt point = null;
while ((point = parser.nextTrkPt()) != null) {
  // point.getLat()
  // point.getLon()
}

我已经成功地使用这段代码在Android上解析了大约100 Mb的GPX文件。对不起,这不是在正常的回购,我还没有计划分享它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18660787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档