由于百度地度开发档里只有一个折线的绘制方法,其实这已能满足大部份需求,可我想绘制多条折线,又一次因为基本功不扎实卡壳了。思前想后还是用集合来搞吧,调试几回居然真的通过了,我的坐标是存放在一个Excel表格里的,以下方法仅供新人参考,大神们若有更好的思路希望不吝赐教。
//绘制折线组,该折线组状态随地图状态变化
public Graphic drawLine(){
String file = getSDPath()+"/ChBiao/peidian.xls";
InputStream is = null;
Graphic lineGraphic = null;
ArrayList
ppline =new ArrayList
();//构建折线集合
int i;
try {
is = new FileInputStream(new File(file));
Workbook wb = Workbook.getWorkbook(is);// 打开Excel文件
Sheet sheet = wb.getSheet(0);// 第一张工作表
int row = sheet.getRows();
Log.e("Map","row"+row);
for (i = 0; i < row; ++i) {
Cell calllatA = sheet.getCell(11, i); // 自加A点获取纬度
Cell calllanA = sheet.getCell(12, i); // 自加A点获取经度
Cell calllatB = sheet.getCell(13, i); // 自加B点获取纬度
Cell calllanB = sheet.getCell(14, i); // 自加B点获取经度
if(calllatA.getContents() == ""||calllatB.getContents() == "") continue; //判断如果遇空值重新循环
double mlat1 = Double.parseDouble(calllatA.getContents());
double mlon1 = Double.parseDouble(calllanA.getContents());
double mlat2 = Double.parseDouble(calllatB.getContents());
double mlon2 = Double.parseDouble(calllanB.getContents());
GeoPoint p1 = new GeoPoint((int) (mlat1*1E6), (int) (mlon1*1E6));//A点
GeoPoint p2 = new GeoPoint((int) (mlat2*1E6), (int) (mlon2*1E6));//B点
//构建线
Geometry lineGeometry = new Geometry();
GeoPoint[] linePoints = new GeoPoint[2];//设定折线点坐标
linePoints[0] = p1;
linePoints[1] = p2;
lineGeometry.setPolyLine(linePoints);
//设定样式
Symbol lineSymbol = new Symbol();
Symbol.Color lineColor = lineSymbol.new Color();
lineColor.red = 255;
lineColor.green = 0;
lineColor.blue = 0;
lineColor.alpha = 255;
lineSymbol.setLineSymbol(lineColor, 2);
//生成Graphic对象
lineGraphic = new Graphic(lineGeometry, lineSymbol);
ppline.add(lineGraphic);
}
} catch (Exception e) {
e.printStackTrace();
}
graphicsOverlay = new GraphicsOverlay(mMapView);
mMapView.getOverlays().add(graphicsOverlay);
Log.e("Map", "ppline.size()"+ppline.size());
//添加折线
for(int w = 0;w