概述
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;
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:
BitmapDescriptor bitmapDescriptor = BitmapDescriptorFactory.fromView();验证无法完成切换操作,
offical code below:
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 设置本地加网络图片,已经切换处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复