Re: [android-developers] Display Detail Overlay when touch a marker on the map

2010-10-08 Thread TreKing
On Thu, Oct 7, 2010 at 10:38 PM, Donald hasitharand...@gmail.com wrote:

 and i have tried to use onTap method to capture marker event but failed.


How have you failed? What does it do or not do that's not working for you?

-
TreKing http://sites.google.com/site/rezmobileapps/treking - Chicago
transit tracking app for Android-powered devices

-- 
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

[android-developers] Display Detail Overlay when touch a marker on the map

2010-10-07 Thread Donald
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;
ArrayListGeoPoint mPoints;

public MapOverlay(Road road, MapView mv) {
// TODO Auto-generated constructor stub
mRoad = road;
if (road.mRoute.length  0) {
mPoints = new ArrayListGeoPoint();
for (int i = 0; i  road.mRoute.length; i++) {
mPoints.add(new GeoPoint(
(int) 
(road.mRoute[i][1] * 100),
(int) 
(road.mRoute[i][0] * 100)));
}
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 ArrayListGeoPoint();
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;