如何在谷歌地图Android API上创建路线
我用SupportMapFragment创建了一个简单的地图应用程序,现在想在上面显示一条路线。 GoogleSamples只有一个例子,它用多边形绘制了一条线,但它没有创建正确的方式,只有两点之间的简单线:(如何在谷歌地图Android API上创建路线,android,api,google-maps,Android,Api,Google Maps,我用SupportMapFragment创建了一个简单的地图应用程序,现在想在上面显示一条路线。 GoogleSamples只有一个例子,它用多边形绘制了一条线,但它没有创建正确的方式,只有两点之间的简单线:( 如何创建穿过街道和道路的垂直路线?不幸的是,无法使用Google Maps API v2自动创建点与点之间的路线。但是,您可以使用Google Direction API: 有了这个结果,你就可以自己画一条路线了。如果有任何错误,我不知道该怎么办,但是这种方法可以帮助你 pub
如何创建穿过街道和道路的垂直路线?不幸的是,无法使用Google Maps API v2自动创建点与点之间的路线。但是,您可以使用Google Direction API:
有了这个结果,你就可以自己画一条路线了。如果有任何错误,我不知道该怎么办,但是这种方法可以帮助你
public class RouteOverlay extends Overlay {
/** GeoPoints representing this routePoints. **/
private final List<GeoPoint> routePoints;
/** Colour to paint routePoints. **/
private int colour;
/** Alpha setting for route overlay. **/
private static final int ALPHA = 120;
/** Stroke width. **/
private static final float STROKE = 4.5f;
/** Route path. **/
private final Path path;
/** Point to draw with. **/
private final Point p;
/** Paint for path. **/
private final Paint paint;
/**
* Public constructor.
*
* @param route Route object representing the route.
* @param defaultColour default colour to draw route in.
*/
public RouteOverlay(final Route route, final int defaultColour) {
super();
routePoints = route.getPoints();
colour = defaultColour;
path = new Path();
p = new Point();
paint = new Paint();
}
@Override
public final void draw(final Canvas c, final MapView mv,
final boolean shadow) {
super.draw(c, mv, shadow);
paint.setColor(colour);
paint.setAlpha(ALPHA);
paint.setAntiAlias(true);
paint.setStrokeWidth(STROKE);
paint.setStyle(Paint.Style.STROKE);
redrawPath(mv);
c.drawPath(path, paint);
}
/**
* Set the colour to draw this route's overlay with.
*
* @param c Int representing colour.
*/
public final void setColour(final int c) {
colour = c;
}
/**
* Clear the route overlay.
*/
public final void clear() {
routePoints.clear();
}
/**
* Recalculate the path accounting for changes to
* the projection and routePoints.
* @param mv MapView the path is drawn to.
*/
private void redrawPath(final MapView mv) {
final Projection prj = mv.getProjection();
path.rewind();
final Iterator<GeoPoint> it = routePoints.iterator();
prj.toPixels(it.next(), p);
path.moveTo(p.x, p.y);
while (it.hasNext()) {
prj.toPixels(it.next(), p);
path.lineTo(p.x, p.y);
}
path.setLastPoint(p.x, p.y);
}
}
公共类路由覆盖扩展覆盖{
/**表示此路由点的地理点**/
专用最终列表路由点;
/**用于绘制路线点的颜色**/
私家色彩;
/**路由覆盖的Alpha设置**/
专用静态最终intα=120;
/**笔划宽度**/
专用静态最终浮动行程=4.5f;
/**路径**/
私有最终路径;
/**用手指画**/
私人终点p;
/**为路径绘制**/
私人最终油漆;
/**
*公共构造函数。
*
*@param route表示路由的对象。
*@param defaultcolor用于绘制路线的默认颜色。
*/
公共线路Overlay(最终线路、最终int默认颜色){
超级();
routePoints=route.getPoints();
颜色=默认颜色;
路径=新路径();
p=新点();
油漆=新油漆();
}
@凌驾
公共最终作废图(最终画布c、最终地图视图mv、,
最终布尔阴影){
超级画(c,mv,阴影);
油漆。设置颜色(颜色);
油漆。setAlpha(α);
paint.setAntiAlias(真);
油漆。设置行程宽度(行程);
绘制.设置样式(绘制.样式.笔划);
重绘路径(mv);
c、 绘制路径(路径、绘制);
}
/**
*设置用于绘制此路线覆盖的颜色。
*
*@param c Int表示颜色。
*/
公共最终颜色(最终内部颜色c){
颜色=c;
}
/**
*清除路线覆盖。
*/
公开最终无效清除(){
routePoints.clear();
}
/**
*重新计算路径以说明对的更改
*投影点和路由点。
*@param mv MapView绘制路径的目的地。
*/
专用空心重绘路径(最终地图视图mv){
最终投影prj=mv.getProjection();
倒带();
final Iterator it=routePoints.Iterator();
prj.toPixels(it.next(),p);
路径移动到(p.x,p.y);
while(it.hasNext()){
prj.toPixels(it.next(),p);
线路图(p.x,p.y);
}
路径设定点(p.x,p.y);
}
}