根据百度地图提供的一组经纬度画带有箭头的线,如何操作啊?现在想到的方法是继承Overlay重写draw
根据android提供的画布自定义画线和箭头,但是mBaiduMap.addOverlay();中间要填写的类型是OverlayOptions 可是继承的Overlay这么转换啊?mBaiduMap.addOverlay(new MyOverlay());
这个时我的自定义类
/**
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
// super.draw(canvas, mapView, shadow);
if (shadow == false) {
paint = new Paint();
paint.setStyle(Style.STROKE);// 设置非填充
paint.setStrokeWidth(8);// 笔宽5像素
// paint.setColor(Color.rgb(22, 22, 22));// 设置为红笔
paint.setColor(Color.RED);
paint.setAntiAlias(true);// 锯齿不显示
int size = listInfo.size() - 1;
for (int i = 0; i < size; i++) {
// paint.setColor(Color.rgb(120 + i * 3, 120 + i * 3,
// 50 + i * 3));// 设置为红笔
// Point point = mMapView.getProjection().toPixels(
// listpoint.get(i).pt, null);
// Point point2 = mMapView.getProjection().toPixels(
// listpoint.get(i + 1).pt, null);
Point point = mBaiduMap.getProjection().toScreenLocation(
listInfo.get(i));
Point point2 = mBaiduMap.getProjection().toScreenLocation(
listInfo.get(i + 1));
JudgeDrawArrow(canvas, point.x, point.y, point2.x, point2.y);// 画箭头
canvas.drawLine(point.x, point.y, point2.x, point2.y, paint);// 画线
}
// canvas.drawLine(listpoint.size().x, point.y, point2.x,
// point2.y, paint);// 画线
// Point point3 = mMapView.getProjection().toPixels(
// listpoint.get(size - 1).pt, null);
// paint.setColor(Color.BLUE);// 设置为红笔
// paint.setStyle(Style.STROKE);// 设置非填充
// paint.setStrokeWidth(5);// 笔宽5像素
// canvas.drawCircle(point3.x, point3.y, 25.5f, paint);
}
if (shadow == false) {
paint.setStrokeWidth(5);// 笔宽5像素
// Point point4 = mMapView.getProjection().toPixels(
// listpoint.get(listpoint.size() - 2).pt, null);
Point point4 = mBaiduMap.getProjection().toScreenLocation(
listInfo.get(listInfo.size() - 2));
canvas.drawText("--》倒数第二站", point4.x, point4.y, paint);
}
}
/**
public double[] rotateVec(int px, int py, double ang, boolean isChlen,
double newLen) {
double rotateResult[] = new double[2];
// 矢量旋转函数,参数含义分别是x分量、y分量、旋转角、是否改变长度、新长度
double vx = px * Math.cos(ang) - py * Math.sin(ang);
double vy = px * Math.sin(ang) + py * Math.cos(ang);
if (isChlen) {
double d = Math.sqrt(vx * vx + vy * vy);
vx = vx / d * newLen;
vy = vy / d * newLen;
rotateResult[0] = vx;
rotateResult[1] = vy;
}
return rotateResult;
}
}
先画一个线段,然后画箭头
http://blog.csdn.net/column/details/android-jacksen-map.html