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 [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en