高德地圖自定義Marker
高德地圖默認的marker樣式是這種
一般的修改樣式是通過icon接口來調整
MarkerOptions markerOptions = new MarkerOptions()
.position(latlng)
.draggable(true)
.icon(BitmapDescriptorFactory.fromBitmap(bitmap));
當遇到圖片加文字的marker該如何自定義呢?如這樣
步驟:
/**
* 往地圖上添加marker
*/
public static void addMarkersToMap(Context context, AMap aMap, LatLng latlng, PointModel model) {
if (aMap != null) {
View view = View.inflate(context, R.layout.view_marker, null);
TextView textView = (TextView) view.findViewById(R.id.tvQuality);
ImageView imageView = (ImageView) view.findViewById(R.id.ivQuality);
int aqi=Integer.parseInt(model.getAqi());
if (aqi>0&&aqi<=100){
imageView.setImageResource(R.drawable.ic_quality_03);
}else if(aqi>100&&aqi<=200){
imageView.setImageResource(R.drawable.ic_quality_02);
}else if (aqi>200){
imageView.setImageResource(R.drawable.ic_quality_01);
}else {
imageView.setImageResource(R.drawable.ic_quality_01);
}
textView.setText(model.getAqi());
Bitmap bitmap = convertViewToBitmap(view);
markerOptions = new MarkerOptions()
.position(latlng)
.draggable(true)
.icon(BitmapDescriptorFactory.fromBitmap(bitmap));
marker = aMap.addMarker(markerOptions);
}
}
自定義view,然后賦值,將view轉化為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;
}
原文:https://blog.csdn.net/qq_16131393/article/details/78252857