hi all, I'm developing a Google map application which will draw a route and will have multiple markers on the map. and once user select a marker i want to display a detail description. i'm using com.google.android.maps.Overlay to draw markers as well as to draw path between two markers.
class MapOverlay extends com.google.android.maps.Overlay { Road mRoad; ArrayList<GeoPoint> mPoints; public MapOverlay(Road road, MapView mv) { // TODO Auto-generated constructor stub mRoad = road; if (road.mRoute.length > 0) { mPoints = new ArrayList<GeoPoint>(); for (int i = 0; i < road.mRoute.length; i++) { mPoints.add(new GeoPoint( (int) (road.mRoute[i][1] * 1000000), (int) (road.mRoute[i][0] * 1000000))); } int moveToLat = (mPoints.get(0).getLatitudeE6() + (mPoints.get( mPoints.size() - 1).getLatitudeE6() - mPoints.get(0) .getLatitudeE6()) / 2); int moveToLong = (mPoints.get(0).getLongitudeE6() + (mPoints .get(mPoints.size() - 1).getLongitudeE6() - mPoints .get(0).getLongitudeE6()) / 2); GeoPoint moveTo = new GeoPoint(moveToLat, moveToLong); MapController mapController = mv.getController(); mapController.animateTo(moveTo); mapController.setZoom(14); } } @Override public boolean draw(Canvas canvas, MapView mv, boolean shadow, long when) { super.draw(canvas, mv, shadow); geo_markers = new ArrayList<GeoPoint>(); if (isDrawRoute) { drawPath(mv, canvas); } // marker Bitmap bmp = null, bmp1 = null, bmp2 = null, bmp3 = null, bmp4 = null; Paint paint = new Paint(); Bitmap bitmap[] = new Bitmap[] { bmp, bmp1, bmp2, bmp3, bmp4 }; Integer[] img_ref = new Integer[] { R.drawable.marker, R.drawable.marker, R.drawable.marker, R.drawable.marker, R.drawable.marker }; Point user_point = new Point(); mapview.getProjection().toPixels(u_geo_point, user_point); Bitmap user_loc = BitmapFactory.decodeResource(getResources(), R.drawable.location); canvas.drawBitmap(user_loc, user_point.x, user_point.y, paint); //geo_markers.add(object) for (int x = 0; x < points.length; x++) { markers[x] = new Point(); mapview.getProjection().toPixels(points[x], markers[x]); bitmap[x] = BitmapFactory.decodeResource(getResources(), img_ref[x]); canvas.drawBitmap(bitmap[x], markers[x].x - bitmap[x].getWidth() / 2, markers[x].y - bitmap[x].getHeight(), paint); } paint.setStrokeWidth(1); paint.setARGB(255, 255, 255, 255); paint.setStyle(Paint.Style.STROKE); return true; } } @Override public boolean onTap(GeoPoint p, MapView mapView) { // TODO Auto-generated method stub Point def = mapView.getProjection().toPixels(p, null); Point pre; Toast.makeText(getBaseContext(), "Touch MAP", Toast.LENGTH_SHORT) .show(); Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.marker); int lat = def.x; int lng = def.y; for (int i = 0; i < points.length; i++) { pre = mapView.getProjection().toPixels(points[i], null); int p_lat = pre.x; int p_lng = pre.y; if ((lat == p_lat) && (lng == p_lng)) { Toast.makeText( getBaseContext(), points[i].getLatitudeE6() / 1E6 + "," + points[i].getLongitudeE6() / 1E6, Toast.LENGTH_SHORT).show(); return true; } } // Lastly return true if we handled this onTap() return false; } and i have tried to use onTap method to capture marker event but failed. any idea how to do it??? regards, Mike -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en