Android高德地图marker 设置本地加网络图片,已经切换处理

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值