【问题标题】:parsing XML file for add marker on google-map application解析 XML 文件以在 google-map 应用程序上添加标记
【发布时间】:2012-04-01 08:14:23
【问题描述】:

我在从 XML 文件中添加标记时遇到问题

这是我的 XML 文件

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

我想用DOM解析器解析经纬度的值

这是我在活动文件中的一段代码

 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);

这是我的markerpeta类

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;
        }

}

此代码没有错误,但应用程序上没有标记,有人可以帮助我吗? 谢谢

【问题讨论】:

  • 你能粘贴markerpeta类的代码吗

标签: android google-maps xml-parsing google-maps-markers


【解决方案1】:

在你的markerpeta类中添加下面的方法

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

也可以替换下面两行试试

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

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

【讨论】:

  • populate() 改为 this.populate();
  • 仍然不工作@DilSe,我认为问题不在于标记,而是在解析XML文件以获取经度和纬度值,因为如果使用普通点它工作正常并且标记是出现
  • 好的,我认为问题在于解析 XML 文件以获取经度和纬度值
  • 你能给我你的电子邮件吗?这样我可以把我的项目发给你吗?请帮帮我
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-22
  • 2017-10-11
  • 2014-02-15
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多