Android 地图视图显示多个地质点之间的路线

Android 地图视图显示多个地质点之间的路线,android,android-mapview,routes,Android,Android Mapview,Routes,我有一个应用程序,其中一个用户得到很多分数(100分或更多),他必须亲自去这些分数并“签到”。他们必须以一定的顺序到达这些点,所以我需要在地图视图中显示一条经过所有这些点的路线 我读过很多关于两点之间的路线的书,但是我找不到任何关于画一条有很多点的复杂路线的书。这种行为可能吗?试试这样的方法 if(DataSources.ActivitiesList.length >0) { String address = "http://maps.google.com/maps?daddr=" +

我有一个应用程序,其中一个用户得到很多分数(100分或更多),他必须亲自去这些分数并“签到”。他们必须以一定的顺序到达这些点,所以我需要在地图视图中显示一条经过所有这些点的路线


我读过很多关于两点之间的路线的书,但是我找不到任何关于画一条有很多点的复杂路线的书。这种行为可能吗?

试试这样的方法

if(DataSources.ActivitiesList.length >0)
{
  String address = "http://maps.google.com/maps?daddr=" +    DataSources.ActivitiesList[0].SiteLatitude.toString() + "," + DataSources.ActivitiesList[0].SiteLongitude.toString();
for (int i= 1 ;i <  DataSources.ActivitiesList.length ; i++) 
{
    if(DataSources.ActivitiesList[i].SiteLatitude != null)
        address += "+to:" + DataSources.ActivitiesList[i].SiteLatitude + "," + DataSources.ActivitiesList[i].SiteLongitude;
}
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(address));
    startActivity(intent);
    break;      
}
if(DataSources.ActivitiesList.length>0)
{
字符串地址=”http://maps.google.com/maps?daddr=“+DataSources.ActivitiesList[0]。SiteLatitude.toString()+”,“+DataSources.ActivitiesList[0]。SiteLatitude.toString();
for(int i=1;i
公共类路由覆盖扩展覆盖{
私人地质点gp1;
私人地质点gp2;
私人内特色;
公共线路覆盖(地质点gp1、地质点gp2、int color){
这是gp1=gp1;
这是gp2=gp2;
这个颜色=颜色;
}
现在,覆盖所剩下的就是重写draw()方法并根据需要绘制线:
@凌驾
公共空白绘制(画布、地图视图、地图视图、布尔阴影){
Projection=mapView.getProjection();
油漆=新油漆();
点=新点();
投影。toPixels(gp1,点);
油漆。设置颜色(颜色);
点2=新点();
顶像素投影(gp2,点2);
油漆。设置行程宽度(5);
油漆。setAlpha(120);
画布绘制线(点.x,点.y,点2.x,点2.y,绘制);
super.draw(画布、地图视图、阴影);
}
回到活动中,只需迭代从google maps获得的地理点,并将它们添加到MapView:
专用空心绘制路径(列出地质点,int颜色){
List overlays=mapView.getOverlays();
对于(int i=1;i
public class RouteOverlay extends Overlay {
    private GeoPoint gp1;
    private GeoPoint gp2;
    private int color;

public RouteOverlay(GeoPoint gp1, GeoPoint gp2, int color) {
        this.gp1 = gp1;
        this.gp2 = gp2;
        this.color = color;
    }
Now all that's left now for our Overlay is to override the draw() method and draw the line as we need it:

@Override
public void draw(Canvas canvas, MapView mapView, boolean shadow) {
    Projection projection = mapView.getProjection();
    Paint paint = new Paint();
    Point point = new Point();
    projection.toPixels(gp1, point);
    paint.setColor(color);
    Point point2 = new Point();
    projection.toPixels(gp2, point2);
    paint.setStrokeWidth(5);
    paint.setAlpha(120);
    canvas.drawLine(point.x, point.y, point2.x, point2.y, paint);
    super.draw(canvas, mapView, shadow);
}
Back in the Activity, just iterate over the GeoPoints that you got from google maps and add each of them to the MapView:

private void drawPath(List geoPoints, int color) {
   List overlays = mapView.getOverlays();

   for (int i = 1; i < geoPoints.size(); i++) {
    overlays.add(new RouteOverlay(geoPoints.get(i - 1), geoPoints.get(i), color));
   }
}