百度地图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)中画图,否则会非常卡,因为每次缩放地图都回计算一遍所有的点,效率非常低。
~~~回家吃饭了。。
,貌似都更新好久了
。拿出之前做的小项目,更换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)中画图,否则会非常卡,因为每次缩放地图都回计算一遍所有的点,效率非常低。
~~~回家吃饭了。。
相关文章推荐
- Linux操作系统启动界面(字符or图形界面)的设置及切换方法
- 排序之归并排序
- [数据结构与算法]第一周(一):线性表---多项式加法&&字符串插入
- 法国自动化研究所SPArse稀疏编码优化工具包介绍
- HttpClient简介
- Json lib JsonConfig用法
- 配置oracle 监听和oracle EM
- css中的zoom
- SQL Server 自增字段归零
- 中国大陆开源镜像站汇总
- EL表达式截取字符串
- posix and system V IPC
- 全键盘操作Windows
- dsp ccs 调试问题
- buzzer(小结8-4)
- writeUTF()方法
- CubieBoard install Ubuntu on NAND+SATA
- android反射加载assets中的已使用dx.bat处理的jar包
- storm 简介及单机版安装指南
- C#使用SQL语句时候的万用密码问题