2013-09-06 7 views
5

में स्थानीय GPX फ़ाइल पार्स मैं इस उदाहरण का पालन किया एंड्रॉयड में एक स्थानीय GPX फ़ाइल पार्स करने के लिए: http://android-coding.blogspot.pt/2013/01/get-latitude-and-longitude-from-gpx-file.htmlएंड्रॉयड

सभी "अक्षां" और "लंबे" तक पहुँचने के लिए ठीक काम करता है, लेकिन मैं "हाथी" पाने के लिए भी जरूरत है मूल्य लेकिन मेरे सभी तम्बू असफल रहे। कोई भी मुझे ऐसा करने के लिए कुछ हिट दे सकता है?

अग्रिम धन्यवाद! सर्वश्रेष्ठ संबंध, एनआर।

उत्तर

2

आपके पास "नोड नोड = 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()); 
    } 
} 
+0

बिल्कुल सही! धन्यवाद – user2649377

1

अद्यतन: मैंने पार्सिंग "ele" तत्व भी जोड़ा है, इसलिए यह कोड आपकी आवश्यकताओं से मेल खा सकता है।

मैं अलग-अलग दृष्टिकोण का प्रस्ताव दूंगा: https://gist.github.com/kamituel/6465125

मेरे दृष्टिकोण में मैं सभी ट्रैक पॉइंट्स का एक ऐरेलिस्ट नहीं बनाता (यह आपके द्वारा पोस्ट किए गए उदाहरण में किया जाता है)। ऐसी सूची काफी मेमोरी का उपभोग कर सकती है, जो एंड्रॉइड पर एक मुद्दा हो सकती है।

मैंने कई ऑब्जेक्ट्स आवंटित करने से बचने के लिए रेगेक्स पार्सिंग का उपयोग करने पर भी छोड़ दिया है (जो कचरा कलेक्टर चलाने के लिए कारण बनता है)।

परिणामस्वरूप, जावा को 16 एमबी ढेर आकार के साथ चलाना, 600 अंकों से अधिक जीपीएक्स फ़ाइल को पार्स करना, कचरा कलेक्टर केवल 12 गुना चलाया जाएगा। मुझे यकीन है कि कोई कम हो सकता है, लेकिन मैंने इसे अभी तक अनुकूलित नहीं किया है।

उपयोग:

GpxParser parser = new GpxParser(new FileInputStream(file)); 
TrkPt point = null; 
while ((point = parser.nextTrkPt()) != null) { 
    // point.getLat() 
    // point.getLon() 
} 

मैं सफलतापूर्वक Android पर करीब 100 एमबी GPX की फ़ाइलों को पार्स करने के लिए इस कोड का उपयोग किया है। क्षमा करें यह नियमित रेपो में नहीं है, मैंने अभी तक इसे साझा करने की योजना नहीं बनाई है।

+0

बहुत अच्छा है! धन्यवाद – user2649377

1

मैं Android के लिए ghitabot द्वारा पुस्तकालय GPXParser पोर्ट किया है।

https://github.com/urizev/j4gpx

+0

स्टूडियो में कैसे उपयोग करें? – Prasad

+0

@Prasad js फ़ाइल को libs फ़ोल्डर में जोड़ें – Urizev

+0

यह लाइब्रेरी gpx फ़ाइल में एक्सटेंशन का समर्थन करेगी – Prasad

3

मैं 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 
     } 
    } 
}); 

योगदान स्वागत है।

+0

क्या आप मुझे बता सकते हैं कि जीपीएक्स फ़ाइल में अपनी लाइब्रेरी – Prasad

+0

हे @ प्रसाद का उपयोग करके एक्सटेंशन को कैसे पार्स किया गया है मैंने आपके [गिटहब पर समस्या] देखी है (https://github.com/ticofab/android-gpx-parser/issues/11), लेकिन अभी तक इस पर काम करने का समय नहीं है। कार्यक्षमता जोड़ने और एक पुल अनुरोध खोलने के लिए स्वतंत्र महसूस करें :) – ticofab