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

Reply via email to