我遵循下面的示例来解析Android:http://android-coding.blogspot.pt/2013/01/get-latitude-and-longitude-from-gpx-file.html中的本地GPX文件
所有的工作都可以访问"lat“和"long”,但我也需要获得"ele“值,但我的所有触角都没有成功。有人能给我点线索吗?
提前感谢!最好的问候,NR。
发布于 2013-09-06 15:27:25
在第一个循环中有"Node = nodelist_trkpt.item(i);“。从此节点获取子元素,运行这些子元素。
例如:
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());
}
}
发布于 2016-01-24 11:09:06
我将把我的GPX解析库添加到这些答案中:https://github.com/ticofab/android-gpx-parser。它提供了两种解析GPX文件的方法:获得/创建GPXParser对象(下面示例中的mParser
)之后,可以直接解析GPX文件。
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
}
也可以解析远程文件:
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
}
}
});
欢迎捐款。
发布于 2013-09-06 15:15:15
更新:我还添加了解析"ele“元素的,因此这段代码可以与您的需求相匹配。
我将提出不同的方法:https://gist.github.com/kamituel/6465125。
在我的方法中,我没有创建一个包含所有跟踪点的ArrayList (这是在您发布的示例中完成的)。这样的列表可以消耗相当多的内存,这在Android上是个问题。
我甚至放弃了使用regex解析来避免分配太多的对象(这会导致垃圾收集器运行)。
因此,运行16 12堆大小的Java,解析带有600多个点的GPX文件,垃圾收集器将只运行12次。我相信一个可以降低,但我还没有对它进行重大的优化。
用法:
GpxParser parser = new GpxParser(new FileInputStream(file));
TrkPt point = null;
while ((point = parser.nextTrkPt()) != null) {
// point.getLat()
// point.getLon()
}
我已经成功地使用这段代码在Android上解析了大约100 Mb的GPX文件。对不起,这不是在正常的回购,我还没有计划分享它。
https://stackoverflow.com/questions/18660787
复制相似问题