天天看點

android自定義marker,Android內建高德地圖如何自定義marker

高德地圖自定義Marker 高德地圖預設的marker樣式是這種

android自定義marker,Android內建高德地圖如何自定義marker

一般的修改樣式是通過icon接口來調整

MarkerOptions markerOptions = new MarkerOptions()

.position(latlng)

.draggable(true)

.icon(BitmapDescriptorFactory.fromBitmap(bitmap));

當遇到圖檔加文字的marker該如何自定義呢?如這樣

android自定義marker,Android內建高德地圖如何自定義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;

}