2012-08-10 58 views
0

當地圖上有最小一個點時,onTap()方法工作,但當我從地圖中刪除所有點時,onTap()方法不起作用,我無法添加點在地圖上。Android onTap mapView方法在刪除所有點後不起作用

請幫助...

代碼:

private class CustomItemizedOverlay2 extends ItemizedOverlay<OverlayItem> { 

    private ArrayList<OverlayItem> mapOverlays = new ArrayList<OverlayItem>(); 
    private Context context; 
    private GeoPoint center = null; 

    public CustomItemizedOverlay2(Drawable defaultMarker) { 
     super(boundCenterBottom(defaultMarker)); 
    } 

    public CustomItemizedOverlay2(Drawable defaultMarker, GeoPoint point) { 
     this(defaultMarker); 
     OverlayItem overlayItem = new OverlayItem(point, "", ""); 
     mapOverlays.add(overlayItem); 
     populate(); 
    } 

    public CustomItemizedOverlay2(Drawable defaultMarker, Context context, 
      String result) { 
     this(defaultMarker); 
     this.context = context; 

     for (int i = 0; i < geoPointList.size(); i++) { 
      OverlayItem overlayItem = new OverlayItem(geoPointList.get(i), 
        "abc", "point" + i); 
      mapOverlays.add(overlayItem); 
     } 
     populate(); 
    } 

    @Override 
    protected OverlayItem createItem(int i) { 
     return mapOverlays.get(i); 
    } 

    @Override 
    public int size() { 
     return mapOverlays.size(); 
    } 

    @Override 
    public boolean onTap(GeoPoint point, MapView mapView) { 

     int size = geoPointList.size(); 
     if (size < 2) { 
      geoPointList.add(point); 

      count++; 
      int lat = point.getLatitudeE6(); 
      int longi = point.getLongitudeE6(); 
      Drawable image = gMap.this.getResources().getDrawable(
        R.drawable.pushpin); 

      CustomItemizedOverlay2 addPointItemizedOverlay = new CustomItemizedOverlay2(
        image, point); 
      mapView.getOverlays().add(addPointItemizedOverlay); 


      mapView.invalidate(); 
     } 
     return super.onTap(point, mapView); 
    } 



} 

和Ontap方法添加點如果geoPointList點的數量少於兩個。

回答

1

終於解決了,因爲我已經實現了自定義的MapOverlay,並在其中使用onTap方法而不是在CustomItemizedOverlay2中使用。