package me.guillaumin.android.osmtracker.overlay; import java.util.ArrayList; import java.util.List; import me.guillaumin.android.osmtracker.R; import me.guillaumin.android.osmtracker.db.TrackContentProvider; import me.guillaumin.android.osmtracker.db.TrackContentProvider.Schema; import org.osmdroid.api.IMapView; import org.osmdroid.util.GeoPoint; import org.osmdroid.views.overlay.ItemizedOverlay; import org.osmdroid.views.overlay.OverlayItem; import android.content.Context; import android.content.ContentResolver; import android.database.Cursor; import android.graphics.Point; import android.graphics.drawable.Drawable; public class WayPointsOverlay extends ItemizedOverlay<OverlayItem> { /** * List of waypoints to display on the map. */ private List<OverlayItem> wayPointItems = new ArrayList<OverlayItem>(); private long trackId; private ContentResolver pContentResolver; public WayPointsOverlay( final Drawable pDefaultMarker, final Context pContext, final long trackId ) { super(pDefaultMarker); this.trackId = trackId; this.pContentResolver = pContext.getContentResolver(); refresh(); } public WayPointsOverlay( final Context pContext, final long trackId ) { this(pContext.getResources().getDrawable(R.drawable.star), pContext, trackId); } @Override public boolean onSnapToItem(final int pX, final int pY, final Point pSnapPoint, final IMapView pMapView) { // TODO Implement this! return false; } @Override protected OverlayItem createItem(final int index) { return wayPointItems.get(index); } @Override public int size() { return wayPointItems.size(); } public void refresh() { wayPointItems.clear(); Cursor c = this.pContentResolver.query( TrackContentProvider.waypointsUri(trackId), null, null, null, TrackContentProvider.Schema.COL_TIMESTAMP + " asc"); for(c.moveToFirst(); !c.isAfterLast(); c.moveToNext()) { OverlayItem i = new OverlayItem( c.getString(c.getColumnIndex(Schema.COL_NAME)), c.getString(c.getColumnIndex(Schema.COL_NAME)), new GeoPoint( c.getDouble(c.getColumnIndex(Schema.COL_LATITUDE)), c.getDouble(c.getColumnIndex(Schema.COL_LONGITUDE))) ); wayPointItems.add(i); } c.close(); populate(); } }