Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to remove an ItemOverlay on touch and add another on touch?
    primarykey
    data
    text
    <p>This is MapOverlay:</p> <pre><code>class MapOverlay extends com.google.android.maps.Overlay { @Override public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) { return true; } @Override public boolean onTouchEvent(MotionEvent event, MapView mapView) { //---when user lifts his finger--- if (event.getAction() == 1) { GeoPoint p = mapView.getProjection().fromPixels( (int) event.getX(), (int) event.getY()); List&lt;Overlay&gt; mapOverlays = mapView.getOverlays(); Drawable drawable = getResources().getDrawable(R.drawable.splash_logo); ItemizedOverlay itemizedoverlay = new ItemizedOverlay(drawable, getApplicationContext()); OverlayItem overlayitem = new OverlayItem(p, "I'm in LA!"); itemizedoverlay.addOverlay(overlayitem); mapOverlays.add(itemizedoverlay); mapView.invalidate(); Geocoder geoCoder = new Geocoder( getBaseContext(), Locale.getDefault()); try { List&lt;Address&gt; addresses = geoCoder.getFromLocation( p.getLatitudeE6() / 1E6, p.getLongitudeE6() / 1E6, 1); String add = ""; if (addresses.size() &gt; 0) { for (int i=0; i&lt;addresses.get(0).getMaxAddressLineIndex(); i++) add += addresses.get(0).getAddressLine(i) + "\n"; } //Toast.makeText(getBaseContext(), add, Toast.LENGTH_SHORT).show(); addr = add; } catch (IOException e) { e.printStackTrace(); } return true; } else return false; } } </code></pre> <p>This is ItemizedOverlay:</p> <pre><code>class ItemizedOverlay extends com.google.android.maps.ItemizedOverlay&lt;OverlayItem&gt;{ private ArrayList&lt;OverlayItem&gt; mOverlays = new ArrayList&lt;OverlayItem&gt;(); private Context mContext; public ItemizedOverlay(Drawable defaultMarker) { super(boundCenterBottom(defaultMarker)); // TODO Auto-generated constructor stub } public ItemizedOverlay(Drawable defaultMarker, Context context) { super(boundCenterBottom(defaultMarker)); mContext = context; } @Override protected OverlayItem createItem(int i) { return mOverlays.get(i); } @Override public int size() { return mOverlays.size(); } public void addOverlay(OverlayItem overlay) { mOverlays.add(overlay); populate(); } public void removeOverlay(OverlayItem overlay) { mOverlays.remove(overlay); populate(); } public void clear() { mOverlays.clear(); populate(); } @Override protected boolean onTap(int index) { OverlayItem item = mOverlays.get(index); AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); dialog.setTitle(item.getTitle()); dialog.setMessage(item.getSnippet()); dialog.show(); return true; } } </code></pre> <p>I'm able to add more than one item overlay with this but not able to call clear so that as to remove the itemziedoverylay item. </p> <p>What I want to do is this: When I touch on a particular point of the map, the previous itemized overlays should be deleted and a new one at that point should be created. I know I've to call clear() but not able to figure out where exactly should I do it. </p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload