2012-04-01 4 views
0

i für das Hinzufügen einer Markierung aus XML-DateiParsen von XML-Datei für Add Marker auf Google-Map-Anwendung

diese meine XML-Datei

<PA> 
<node> 
    <id>1</id> 
    <nama>SMP 8 Cimahi</nama> 
    <longitude>-6.894581</longitude> 
    <latitude>107.536519</latitude> 
    <kategori>sekolah</kategori> 
</node> 

i Wert analysieren möchte ein Problem haben, Länge und Breite mit DOM-Parser

dies ein Stück von meinem Code auf Aktivitätsdatei

try { 

     DocumentBuilderFactory DBF; 
      DocumentBuilder DB; 
      Document dom; 
      Element elt; 

      DBF = DocumentBuilderFactory.newInstance(); 
      DB = DBF.newDocumentBuilder(); 
      dom = DB.parse(new InputSource(getAssets().open("database.xml"))); 
      elt = dom.getDocumentElement(); 

     NodeList nodeList = elt.getElementsByTagName("node"); 
     for (int i = 0; i < nodeList.getLength(); i++) { 

      Node node = nodeList.item(i); 

      Element fstElmnt = (Element) node; 
          NodeList longList = fstElmnt.getElementsByTagName("longitude"); 
      Element longElement = (Element) longList.item(0); 
      longList = longElement.getChildNodes(); 

      int lng = ((int) (Double.parseDouble(longList.item(0).getNodeValue()) *1E6)); 


      NodeList latList = fstElmnt.getElementsByTagName("latitude"); 
      Element latElement = (Element) latList.item(0); 
      latList = latElement.getChildNodes(); 

      int lat = ((int) (Double.parseDouble(latList.item(0).getNodeValue()) *1E6)); 

      List<Overlay> mapOverlays = mapView.getOverlays(); 
      Drawable drawable = this.getResources().getDrawable(R.drawable.school); 
      markerpeta itemizedoverlay = new markerpeta(drawable,this); 

      GeoPoint point = new GeoPoint(lat,lng); 
      OverlayItem overlayitem = new OverlayItem(point, "", null); 

      itemizedoverlay.addOverlay(overlayitem); 
      mapOverlays.add(itemizedoverlay); 

dies meine markerpeta Klasse

public class markerpeta extends ItemizedOverlay { 
private ArrayList<OverlayItem> mOverlay = new ArrayList<OverlayItem>(); 
private Context mContext; 
//private peta peta; 

public markerpeta(Drawable defaultMarker) { 
    super(boundCenterBottom(defaultMarker)); 
    // TODO Auto-generated constructor stub 
} 

public markerpeta(Drawable defaultMarker, Context context) { 
    super(boundCenterBottom(defaultMarker)); 
    mContext = context; 
    // TODO Auto-generated constructor stub 
} 

public void addOverlay(OverlayItem overlay){ 
    mOverlay.add(overlay); 
    populate(); 

} 

@Override 
protected OverlayItem createItem(int i) { 
    // TODO Auto-generated method stub 
    return mOverlay.get(i); 
} 

@Override 
public int size() { 
    // TODO Auto-generated method stub 
    return mOverlay.size(); 
} 

@Override 
     protected boolean onTap(int index) { 
      OverlayItem item = mOverlay.get(index); 
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
      dialog.setTitle(item.getTitle()); 
      dialog.setMessage(item.getSnippet()); 
      dialog.setPositiveButton("Close", new OnClickListener() { 

       public void onClick(DialogInterface arg0, int arg1) { 
        arg0.dismiss(); 
      } 
      }); 
      dialog.show(); 
      return true; 
     } 

}

gibt es keine Fehler in diesem Code, aber es gibt keine Markierung auf der Anwendung, jemand kann mir helfen? danke

+0

können Sie den Code für die markerpeta Klasse einfügen – Ishu

Antwort

0

In Ihrem markerpeta Klasse hinzufügen die unter der Methode

@Override 
public void draw(Canvas canvas, MapView mapView, boolean shadow) { 
// TODO Auto-generated method stub 
super.draw(canvas, mapView, shadow);   
} 

auch ersetzen die folgenden zwei Zeilen ein Versuch

Drawable drawable = this.getResources().getDrawable(R.drawable.school); 
markerpeta itemizedoverlay = new markerpeta(drawable,this); 

mit

Drawable ziehbar = getApplicationContext(). getResources(). getDrawable (R.drawable.school); markerpeta itemizedoverlay = new markerpeta (Zeichen, getApplicationContext());

+0

nicht @DilSe arbeiten :( – idham

+0

populate() ändern this.populate(); – Ishu

+0

noch nicht @DilSe arbeiten, ich denke, das Problem ist nicht auf die Markierung ist, aber in der Analyse der XML-Datei, um den Längen- und Breitengradwert zu nehmen, weil wenn gewöhnlicher Punkt es Arbeit normal ist und die Markierung – idham