我是靠谱客的博主 风趣大白,这篇文章主要介绍Android高德地图marker 设置本地加网络图片,已经切换处理,现在分享给大家,希望可以做个参考。

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
Amap_2DMap_V2.9.0_20160525 Amap_Location_V2.6.0_20160628 Amap_Search_V3.3.0_20160616 这里的customerList是用户基本信息 for (int i = 0; i < customerList.size(); i++) { MarkerView markerViewSelected = new MarkerView(getContext()); markerViewSelected.setIvSelected(); markerViewSelected.getDrawable(customerList.get(i)); markerViewSelected.setLatlng(getPresenter().getLatlng(customerList.get(i))); MarkerView markerViewUnSelected = new MarkerView(getContext()); markerViewUnSelected.setIvUnSelected(); markerViewUnSelected.setLatlng(getPresenter().getLatlng(customerList.get(i))); markerViewUnSelected.setOnImageLoadedListener(new MarkerView.OnImageLoadedListener() { @Override public void onImageLoaded(HttpNearby.CustomList customList, LatLng latLng, Drawable resource) { if (resource != null) { customList.setDrawable(resource); markerViewSelected.setImageResource(resource); markerViewUnSelected.setImageResource(resource); Bitmap bitmapSelected = getPresenter().getViewBitmap(markerViewSelected); Bitmap bitmapUnselected = getPresenter().getViewBitmap(markerViewUnSelected); MarkerOptions icon = new MarkerOptions() .position(latLng) .icon(BitmapDescriptorFactory.fromBitmap(bitmapUnselected)); Marker marker = mAMap.addMarker(icon); MyMarkerView myMarkerView = new MyMarkerView(); myMarkerView.setBitmap(bitmapSelected); myMarkerView.setUnBitmap(bitmapUnselected); customList.setMyMarkerView(myMarkerView); marker.setObject(customList); mAddMarkers.add(marker); } } }, customerList.get(i)); } 这是需要展示在marker上的view import android.content.Context; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.annotation.Nullable; import android.support.annotation.RequiresApi; import android.util.AttributeSet; import android.view.LayoutInflater; import android.widget.ImageView; import android.widget.LinearLayout; import com.amap.api.maps2d.model.LatLng; public class MarkerView extends LinearLayout { private WxGlideUserHeadView wxIvUser; private ImageView ivBg; private HttpNearby.CustomList customList; private LatLng latLng; public MarkerView(Context context) { this(context, null); } public MarkerView(Context context, @Nullable AttributeSet attrs) { this(context, attrs, 0); } public MarkerView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(context, attrs); } private void initView(Context context, AttributeSet attrs) { LayoutInflater.from(context).inflate(R.layout.view_amap_marker, this); wxIvUser = findViewById(R.id.iv_user); ivBg = findViewById(R.id.iv_bg); } @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public MarkerView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); initView(context, attrs); } public void setOnImageLoadedListener(OnImageLoadedListener loadedListener, HttpNearby.CustomList customList) { this.customList = customList; wxIvUser.setOnImageLoadedListener(customList, loadedListener, latLng); getDrawable(customList); } public void getDrawable(HttpNearby.CustomList customList) { wxIvUser.showMarker(customList.getFullname(), customList.getAvatar()); } public void setLatlng(LatLng latLng) { this.latLng = latLng; } public void setImageResource(Drawable resource) { wxIvUser.getIv().setImageDrawable(resource); } public void setIvUnSelected() { ivBg.setImageResource(R.drawable.ic_a_dw_mb_xh); } public LatLng getLatLng() { return latLng; } public void setIvSelected() { ivBg.setImageResource(R.drawable.ic_a_dw_mb_ac_xh); } public interface OnImageLoadedListener { void onImageLoaded(HttpNearby.CustomList customList, LatLng latLng, Drawable resource); } } 头像展示 public class WxGlideUserHeadView extends FrameLayout { public ImageView iv; public TextView tv;
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
public void showMarker(String url) { ImageLoadHelp.getBitmap(url, iv, R.drawable.pic_default_chart_xh,customList,listener,latLng); } 获取到glide回调 public static void getBitmap(String url, ImageView imageView, int holdId, HttpNearby.CustomList customList,MarkerView.OnImageLoadedListener listener, LatLng latLng) { url = initShrinkImageUrl(url); Glide.with(MainApplication.getContext()) .load(url).apply( RequestOptions.circleCropTransform().placeholder(holdId).error(holdId) ).into(new CustomTarget<Drawable>() { @Override public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) { if (listener != null) listener.onImageLoaded(customList,latLng, resource); } @Override public void onLoadCleared(@Nullable Drawable placeholder) { if (listener != null) listener.onImageLoaded(customList,latLng, placeholder); } @Override public void onLoadFailed(@Nullable Drawable errorDrawable) { super.onLoadFailed(errorDrawable); if (listener != null) listener.onImageLoaded(customList,latLng, errorDrawable); } }); } 这里是marker切换处理 private boolean onMarkModelClick(Marker marker) { setUnSelectMarker(false); if (marker != null) { HttpNearby.CustomList customList = (HttpNearby.CustomList) marker.getObject(); mNearbyUserView.setData(customList); MyMarkerView myMarkerView = customList.getMyMarkerView(); BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(myMarkerView.getBitmap()); marker.setIcon(bitmapDescriptor); marker.setZIndex(0); mSelectedMarker = marker; } return true; } private void setUnSelectMarker(boolean isSetNull) { if (mSelectedMarker != null) { HttpNearby.CustomList customList = (HttpNearby.CustomList) mSelectedMarker.getObject(); MyMarkerView myMarkerView = customList.getMyMarkerView(); BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromBitmap(myMarkerView.getUnBitmap()); mSelectedMarker.setIcon(bitmapDescriptor); mSelectedMarker.setZIndex(0); if (isSetNull) { mSelectedMarker = null; } } else { } } MyMarkerView保存了两个bitmap的处理 notice:
复制代码
1
2
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView();验证无法完成切换操作, offical code below:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static BitmapDescriptor fromView(View var0) { String var1 = "fromView"; try { Context var2 = aq.a; if (var2 != null) { FrameLayout var3 = new FrameLayout(var2); var3.addView(var0); var3.destroyDrawingCache(); return fromBitmap(a(var3)); } else { return null; } } catch (Throwable var4) { ck.a(var4, "BitmapDescriptorFactory", var1); return null; } }

github :https://github.com/monotonewang

最后

以上就是风趣大白最近收集整理的关于Android高德地图marker 设置本地加网络图片,已经切换处理的全部内容,更多相关Android高德地图marker内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(85)

评论列表共有 0 条评论

立即
投稿
返回
顶部