您的位置:首页 > 其它

百度地图2.2+路线规划

2013-11-12 18:30 453 查看
这段时间项目比较松了,发现百度地图2.0都更新了

,貌似都更新好久了

。拿出之前做的小项目,更换JAR包,so库。run,然后就都不能用了。重头看了看API,发现改动还是蛮多的,原来的规划路线的功能,早Overlay中画线的方法都不能用了。貌似百度发现这个方法用的比较多吧,给封装了。看了看demo的画图的类。用到了

GraphicsOverlay,Geometry,ItemizedOverlay和Graphic.

说一下我的理解,GraphicsOverlay就是字面的意思,一个图形的覆盖图层,把一个Graphic对象用setData传进去,然后用加入mapView,再刷新(1.3的时候是invalidate,现在改成refresh了

)。

Geometry是一个构造图形的类,可以画线、圆形、多边形。

ItemizedOverlay是一个实现好的Overlay,可以放覆盖物,我认为放点最好了。

Graphic就是个图形。

好了,上代码:

private void drawGraphs(){

GraphicsOverlay graphicsOverlay =
new GraphicsOverlay(mMapView);

mMapView.getOverlays().add(graphicsOverlay);

//添加点

graphicsOverlay.setData(drawLines());

//执行地图刷新使生效

mMapView.refresh();

}

Graphic drawLines(){

//构建点

Geometry pointGeometry =
new Geometry();

//从数据库中取出所有需要的点的坐标

GeoPoint[] list = RidingUtils.getPoints(this,
"points", 2);

//OverlayItem ,ItemizedOverlay是一起使用的

OverlayItem start =
new OverlayItem(list[0], null,
null);

OverlayItem end =
new OverlayItem(list[list.length-1],
null, null);

//设置起始点的图标,终点使用默认图标

start.setMarker(getResources().getDrawable(R.drawable.start_point));

ItemizedOverlay<OverlayItem> itemizedOverlay =
new ItemizedOverlay<OverlayItem>(getResources().getDrawable(R.drawable.end_point),
mMapView);

itemizedOverlay.addItem(start);

itemizedOverlay.addItem(end);

//将起始点和重点放入地图

mMapView.getOverlays().add(itemizedOverlay);

//把所有点放入集合绘图类,连出一条线

pointGeometry.setPolyLine(list);

//设定样式

Symbol lineSymbol =
new Symbol();

Symbol.Color pointColor = lineSymbol.new Color();

pointColor.red = 0;

pointColor.green = 126;

pointColor.blue = 255;

pointColor.alpha = 255;

lineSymbol.setLineSymbol(pointColor, 5);

lineSymbol.setPointSymbol(pointColor);

//生成Graphic对象

Graphic pointGraphic =
new Graphic(pointGeometry, lineSymbol);

return pointGraphic;

}

上面注释蛮全的,就不一个个解释了,我是在初始化地图后做的上面操作的,如果没有初始地图上面不会成功的。

还有,如果你用的是1.3的jar包,在draw()方法中画图一定要再if(!shallow)中画图,否则会非常卡,因为每次缩放地图都回计算一遍所有的点,效率非常低。

~~~回家吃饭了。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: