Android 地图开发,高德地图,两点画线或者多点 画线
最近用高德地图做一些绘制行走路线的功能,帖子写的都好模糊,
我这里整个最简单的
先上效果图,只看地图部分即可,地图高度宽度可以修改的

下面是具体代码
首先还是最简单的布局文件
<com.amap.api.maps.MapView
android:layout_marginTop="10dp"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="150dp"/>
然后是代码部分
--------我是分割线----------------------------------------------
//声明一个外部变量
MapView mapView;
/**
* protected void onCreate(Bundle savedInstanceState) {
* 参数就是这玩意 savedInstanceState
*然后直接调用这个方法就好
*/
private void setMap(Bundle savedInstanceState){
mapView = (MapView) findViewById(R.id.map);
//必须
mapView.onCreate(savedInstanceState);
AMap aMap = mapView.getMap();
List<LatLng> latLngList = getLatLngList();
//移动相机到中心点,第二个参数是相机缩放倍数
aMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLngList.get(0), 18));
//画线 具体参数可以在这里修改
aMap.addPolyline(new PolylineOptions()
.addAll(latLngList)//添加一个LatLng列表
.color(Color.RED)//线条的颜色
.width(10f)//线条的宽度
.setDottedLine(false)//点线?虚线?
);
}
//这个是设置具体的路径参数,可以设置复数多个
private List<LatLng> getLatLngList() {
List<LatLng> latLngList = new ArrayList<>();
/*
*/ 有几个点 线就会跟着绕 2个也行 M个也行
*/
latLngList.add(new LatLng(23.11538, 113.395984));
latLngList.add(new LatLng(23.11538, 113.395004));
latLngList.add(new LatLng(23.11508, 113.395004));
return latLngList;
}
--------我是分割线----------------------------------------------
这里附上一个拓展方法就是设置一个 提示语 没需要可以无视这个
用法是直接靠过去,把aMap对应上就好
//带自定义文本的Marker标记
Bitmap bitmap = setCanvasTitle("起始位置");//设置提示语的图片
aMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(bitmap))
.position(latLngList.get(0)));
Bitmap bitmap1 = setCanvasTitle( "结束位置");//设置提示语的图片
aMap.addMarker(new MarkerOptions().icon(BitmapDescriptorFactory.fromBitmap(bitmap1))
.position(latLngList.get(2)));
/**
* 设置坐标的提示语 和小图标 bitmap
*/
private Bitmap setCanvasTitle(String s) {
Bitmap bitmap = BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE).getBitmap();
bitmap = imageScale(bitmap, 150, 150);//调整图片的大小
Canvas canvas = new Canvas(bitmap);
Paint paint = new Paint();
paint.setColor(Color.WHITE);
paint.setTextAlign(Paint.Align.CENTER);
paint.setTextSize(25f);
paint.setTypeface(Typeface.DEFAULT_BOLD);
canvas.drawText(s, bitmap.getWidth() / 2, bitmap.getHeight() / 2, paint);
return bitmap;
}