パスを使用して描画された一連の線を含むMapviewのオーバーレイのonTap関数をオーバーライドしようとしています。onTap for linesを備えた特定のオーバーレイが設計されているかどうか疑問に思いましたか?
私のオーバーレイは次のようになります。
public class MyPathOverlay extends Overlay {
MapView map;
Projection projection;
ArrayList<Pair<GeoPoint, Integer>> pointsList; // Set of points and the
// color of the line
// starting from this point
public MyPathOverlay(MapView contextMap, ArrayList<Pair<GeoPoint, Integer>> points) {
map = contextMap;
projection = map.getProjection();
pointsList = points;
}
@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
super.draw(canvas, mapView, shadow);
if (shadow == false && pointsList !=null) {
for (int i = 0; i < pointsList.size() - 1; i++) {
Paint paint = new Paint();
paint.setDither(true);
Pair<GeoPoint, Integer> p1 = pointsList.get(i);
GeoPoint gp1 = p1.first;
paint.setColor(p1.second);
GeoPoint gp2 = pointsList.get(i + 1).first;
paint.setStyle(Paint.Style.FILL_AND_STROKE);
paint.setStrokeJoin(Paint.Join.ROUND);
paint.setStrokeCap(Paint.Cap.ROUND);
paint.setStrokeWidth(5);
Point point1 = new Point();
Point point2 = new Point();
projection.toPixels(gp1, point1);
projection.toPixels(gp2, point2);
Path path = new Path();
path.moveTo(point2.x, point2.y);
path.lineTo(point1.x, point1.y);
canvas.drawPath(path, paint);
}
}
}
@Override
public boolean onTap(GeoPoint p, MapView mapView) {
return super.onTap(p, mapView);
}
}