老规矩,先上效果图。
看到了绿色的点了吗。关键有两个。第一,每个覆盖物要有序号。第二,自定义覆盖物只能用bitmap。
这里贴代码了。关键的一步,view转bitmap,
public static Bitmap convertViewToBitmap(View view) { view.measure(View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED), View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED)); view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight()); view.buildDrawingCache(); Bitmap bitmap = view.getDrawingCache(); return bitmap; }
这是绘制每个不同的点
for (int i = 0; i < mDataBeen.size(); i++) { String lat = mDataBeen.get(i).getLat(); String lng = mDataBeen.get(i).getLng(); // String zh_address = mDataBeen.get(i).getZh_address(); View view = View.inflate(MapDataActivity.this, R.layout.view_day, null); TextView tv_price = (TextView) view.findViewById(R.id.tv_price); int j = i + 1; tv_price.setText(j+""); Bitmap bitmap = convertViewToBitmap(view); if (lat!=null&lng!=null){ mLatLng = new LatLng(Double.parseDouble(lat), Double.parseDouble(lng)); mLatLngList.add(mLatLng); if (mDataBeen.size()==1){ mUpdata = CameraUpdateFactory.newCameraPosition( //15是缩放比例,0是倾斜度,30显示比例 new CameraPosition(mLatLng, 19, 0, 30));//这是地理位置,就是经纬度。 }else{ mUpdata = CameraUpdateFactory.newCameraPosition( //15是缩放比例,0是倾斜度,30显示比例 new CameraPosition(mLatLng, 13, 0, 30));//这是地理位置,就是经纬度。 } MarkerOptions draggable = new MarkerOptions() //.title(j+"") .position(mLatLng) .icon(BitmapDescriptorFactory.fromBitmap(bitmap)) .draggable(true); markerOptionlst.add(draggable); Marker marker = aMap.addMarker(draggable); marker.showInfoWindow();// 设置默认显示一个infowinfow // }