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;