私は、ユーザーに多くのポイント(100以上)が与えられ、ユーザーがそれらのポイントに物理的に移動して「チェックイン」する必要があるアプリを持っています。それらは特定の順序でそれらのポイントに移動する必要があるため、これらすべてのポイントを通過するルートをMapViewに表示する必要があります。
2点間のルートの取得についてはよく読んだのですが、ポイントの多い複雑なルートを描くことについては何も見つかりません。この動作は可能ですか?
私は、ユーザーに多くのポイント(100以上)が与えられ、ユーザーがそれらのポイントに物理的に移動して「チェックイン」する必要があるアプリを持っています。それらは特定の順序でそれらのポイントに移動する必要があるため、これらすべてのポイントを通過するルートをMapViewに表示する必要があります。
2点間のルートの取得についてはよく読んだのですが、ポイントの多い複雑なルートを描くことについては何も見つかりません。この動作は可能ですか?
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));
}
}
このようなものを試してください
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;
}