高德地圖自定義Marker 高德地圖預設的marker樣式是這種
一般的修改樣式是通過icon接口來調整
MarkerOptions markerOptions = new MarkerOptions()
.position(latlng)
.draggable(true)
.icon(BitmapDescriptorFactory.fromBitmap(bitmap));
當遇到圖檔加文字的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;
}