Android Open Source - maps sax Handler






From Project

Back to project page maps.

License

The source code is released under:

GNU General Public License

If you think the Android project maps listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package edu.cs4730.MapDemo;
/*from  ww  w .j  av  a2  s . c  om*/
import android.util.Log;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/*
 * This parser is ignoring a large about of data in the kml file.
 * But otherwise, it create a dataset to placed on a map.
 * 
 * Bases of this code comes from http://codemagician.wordpress.com/2010/05/06/android-google-mapview-tutorial-done-right/
 * There was more then a bit of modification though.
 */

public class saxHandler extends DefaultHandler{ 

    // =========================================================== 
    // Fields 
    // =========================================================== 

    private boolean in_kmltag = false; 
    private boolean in_placemarktag = false; 
    private boolean in_nametag = false;
    private boolean in_descriptiontag = false;
    private boolean in_geometrycollectiontag = false;
    private boolean in_linestringtag = false;
    private boolean in_pointtag = false;
    private boolean in_coordinatestag = false;

    private StringBuffer buffer;

    private dataSet DataSet = new dataSet(); 

    private Placemark tmp = null;
    
    // =========================================================== 
    // Getter 
    // =========================================================== 

    public dataSet getParsedData() {    
      return DataSet; 
    } 

    // =========================================================== 
    // Methods 
    // =========================================================== 
    @Override 
    public void startDocument() throws SAXException { 
      this.DataSet = new dataSet(); 
    } 

    @Override 
    public void endDocument() throws SAXException { 
      // Nothing to do
    } 

    /** Gets be called on opening tags like: 
     * <tag> 
     * Can provide attribute(s), when xml was like: 
     * <tag attribute="attributeValue">*/ 
    @Override 
    public void startElement(String namespaceURI, String localName, 
        String qName, Attributes atts) throws SAXException { 
      Log.d("SaxHandler","startElement is "+localName);
      if (localName.equals("kml")) { 
        this.in_kmltag = true;
      } else if (localName.equals("Placemark")) { 
        this.in_placemarktag = true; 
        tmp = new Placemark();  //begin building the placemark to be added to the dataset.
      } else if (localName.equals("name")) { 
        this.in_nametag = true;
      } else if (localName.equals("description")) { 
        this.in_descriptiontag = true;
      } else if (localName.equals("GeometryCollection")) {   //don't care...
        this.in_geometrycollectiontag = true;
      } else if (localName.equals("LineString")) { //don't care...
        this.in_linestringtag = true;              
      } else if (localName.equals("point")) { //don't care...
        this.in_pointtag = true;          
      } else if (localName.equals("coordinates")) {
        buffer = new StringBuffer();
        this.in_coordinatestag = true;                        
      }
    } 

    /** Gets be called on closing tags like: 
     * </tag> */ 
    @Override 
    public void endElement(String namespaceURI, String localName, String qName) 
    throws SAXException { 
      if (localName.equals("kml")) {
        this.in_kmltag = false;  //we are done!
      } else if (localName.equals("Placemark")) { 
        this.in_placemarktag = false;
        //end of a group, start over
        DataSet.addPlacemark(tmp);
        tmp = null;
      } else if (localName.equals("name")) { 
        this.in_nametag = false;           
      } else if (localName.equals("description")) { 
        this.in_descriptiontag = false;
      } else if (localName.equals("GeometryCollection")) {  // don't have any
        this.in_geometrycollectiontag = false;
      } else if (localName.equals("LineString")) { //should not have any...
        this.in_linestringtag = false;              
      } else if (localName.equals("point")) {  //should not have any...
        this.in_pointtag = false;          
      } else if (localName.equals("coordinates")) {
        tmp.setCoordinates(buffer.toString().trim());
        Log.d("SaxHandler","Coor: "+tmp.getCoordinates());
        this.in_coordinatestag = false;
        buffer = null;
      }
    } 

    /** Gets be called on the following structure: 
     * <tag>characters</tag> */ 
    @Override 
    public void characters(char ch[], int start, int length) { 
      if(this.in_nametag){  //attempt to deal with bad xml? 
        if (tmp ==null) 
          tmp = new Placemark();
        tmp.setTitle(new String(ch, start, length));  
        Log.d("SaxHandler","name is "+tmp.getTitle());
      } else   if(this.in_descriptiontag){ 
        if (tmp==null) 
          tmp = new Placemark();
        tmp.setDescription(new String(ch, start, length));
        //Log.d("SaxHandler","name is "+tmp.getDescription());  Not sure I care actually...
      } else if(this.in_coordinatestag){        
        if (tmp==null) 
          tmp=new Placemark();
        //maybe on several lines, so add to the buffer, when ends, then place it in tmp.
        buffer.append(ch, start, length);          
        //Log.d("SaxHandler","buffer:"+buffer);
      }
    } 
}




Java Source Code List

android.UnusedStub.java
edu.cs4730.MapDemo.GoogleMapsDemo2.java
edu.cs4730.MapDemo.GoogleMapsDemo.java
edu.cs4730.MapDemo.HelloGoogleMaps2.java
edu.cs4730.MapDemo.HelloItemizedOverlay.java
edu.cs4730.MapDemo.MapDemoActivity.java
edu.cs4730.MapDemo.Placemark.java
edu.cs4730.MapDemo.dataSet.java
edu.cs4730.MapDemo.myItemizedOverlay.java
edu.cs4730.MapDemo.myOverlayItem.java
edu.cs4730.MapDemo.myOverlay.java
edu.cs4730.MapDemo.saxHandler.java
edu.cs4730.mapdemov2.BasicMapActivity.java
edu.cs4730.mapdemov2.BasicMapActivity.java
edu.cs4730.mapdemov2.CompassActivity.java
edu.cs4730.mapdemov2.CompassActivity.java
edu.cs4730.mapdemov2.DrawMapActivity.java
edu.cs4730.mapdemov2.DrawMapActivity.java
edu.cs4730.mapdemov2.MainActivityOrg.java
edu.cs4730.mapdemov2.MainActivityOrg.java
edu.cs4730.mapdemov2.MainActivity.java
edu.cs4730.mapdemov2.MainActivity.java
edu.cs4730.mapdemov2.Placemark.java
edu.cs4730.mapdemov2.Placemark.java
edu.cs4730.mapdemov2.dataSet.java
edu.cs4730.mapdemov2.dataSet.java
edu.cs4730.mapdemov2.saxHandler.java
edu.cs4730.mapdemov2.saxHandler.java