700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 高德地图点击marker图标改变效果实现过程

高德地图点击marker图标改变效果实现过程

时间:2022-04-23 05:36:11

相关推荐

高德地图点击marker图标改变效果实现过程

想在集成的高德地图中实现一个marker受到点击时,图标变大的效果,网上查了好多,要么不符合我的需求,要么语焉不详,干脆自己动手写了个,现在把代码分享出来

aMap.setOnMarkerClickListener(new OnMarkerClickListener() {@Overridepublic boolean onMarkerClick(Marker marker) { marker.showInfoWindow();//显示大图标lastBm = getNormalIcon(marker.getOptions());//记录即将被覆盖的原图,用于以后恢复Marker markerNew = changeMarkerImg(marker);//改变marker的icon,并得到新的marker对象String curMarkerId = markerNew.getId();// 记录下这个图标的id,用于判断再次点击是否还是这个按钮resetMarker(curMarkerId, markerNew);//重置除点击按钮外的所有按钮markerLast = markerNew;// 记录当前marker对象,用于下次点击时判断return true;}});2,更换marker的icon方法private Marker changeMarkerImg(Marker marker) {MarkerOptions options = marker.getOptions();options.getIcon().recycle();// 回收原图片Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.ico_dot);marker.setIcon(BitmapDescriptorFactory.fromBitmap(bm));return marker;}3,重置除点击按钮外的所有按钮private void resetMarker(String curMarkerId, Marker markerNew) {if (null != markerLast) {if (!TextUtils.equals(curMarkerId, markerLast.getId())) {markerLast.setIcon(new BitmapDescriptorFactory().fromBitmap(lastBm));}}}4,生成infoWindow的回调方法@Overridepublic View getInfoWindow(Marker marker) {View infoWindow = getPressView(marker);return infoWindow;}@SuppressLint("NewApi")public View getPressView(Marker marker) {// 小气泡部分View infoWindow = getLayoutInflater().inflate(R.layout.custom_info_window, null);Bitmap bitmap = getPressIcon(marker.getOptions());BitmapDrawable background = new BitmapDrawable(MarkerActivity.this.getResources(), bitmap);infoWindow.findViewById(R.id.info_window).setBackground(background);// 业务部分buttomView.setVisibility(View.VISIBLE);marker.getSnippet();if (marker.getSnippet().contains("加油站")) {// 加油站图片markerName.setText("加油站");} else if (marker.getSnippet().contains("银行")) {// 银行图片markerName.setText("银行");} else if (marker.getSnippet().contains("厕所")) {// 厕所图片markerName.setText("厕所");}markerContent.setText("" + marker.getTitle());return infoWindow;}5,生成默认图标bitmap的方法private Bitmap getNormalIcon(MarkerOptions options) {Bitmap bm = null;if (options.getSnippet().contains("加油站")) {// 加油站图片bm = BitmapFactory.decodeResource(getResources(),R.drawable.ico_refuel_normal);} else if (options.getSnippet().contains("银行")) {// 银行图片bm = BitmapFactory.decodeResource(getResources(),R.drawable.ico_money_normal);} else if (options.getSnippet().contains("厕所")) {// 厕所图片bm = BitmapFactory.decodeResource(getResources(),R.drawable.ico_toilet_normal);}return bm;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。