百度地图2.2+路线规划

这段时间项目比较松了,发现百度地图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 itemizedOverlay = new ItemizedOverlay(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)中画图,否则会非常卡,因为每次缩放地图都回计算一遍所有的点,效率非常低。

~~~回家吃饭了。。


你可能感兴趣的:(Android,百度地图,地图,overlay,android,s)