高德地图类似ofo点击图标放大功能

1 篇文章 0 订阅


1,基本需求:需要点击图标突出显示,即放大点击的图标。

2:思路:使用不同的layout,将图标大小设置成需要的大小。

3关键代码:

初始化:

  private TextureMapView mapview;
    private AMap aMap;
    private MyLocationStyle myLocationStyle;
    private LatLng mPhoneLatlng;
    private LatLng startLatlng;
    private LatLng mDesLatlng = null;
    private String mDesAddress = "";
    private String mStartAddress = "";
    private List<Marker> markerList = new ArrayList<>();

private Marker lastClickMarker;
private long lastClickTime = 0;


mark点击事件:

  @Override
    public boolean onMarkerClick(Marker marker) {
        try {
            Object obj = marker.getObject();
            String useRegCode;
            if (obj != null) {
                useRegCode = obj.toString();
//更换图标
                Marker markerNew = changeMarkerImg(marker, useRegCode, true);
                curUseRegcode = useRegCode;
//重置上次图标
                resetMarker();
                lastClickMarker = markerNew;
//                ToolLog.w("mark", curUseRegcode + "\tmarklist.size:" + markerList.size() + "\nold id:" + marker.getId() + "\t newId:" + lastClickMarker.getId());
           ……业务需求
        } catch (Exception e) {
            e.printStackTrace();
            showToast("出现错误,请刷新地图");
        }
        return true;
    }

替换图标代码:

private Marker changeMarkerImg(Marker marker, final String useRegcode, boolean showLarge) {
//获取原设置参数
    MarkerOptions options = marker.getOptions();
//回收原图片
    options.getIcon().recycle();
    int layoutId = showLarge ? R.layout.item_marker_img_large : R.layout.item_marker_img_small;
    View view = LayoutInflater.from(getActivity()).inflate(layoutId, null);
    ((ImageView)view.findViewById(R.id.iv_marker)).setImageResource(drawableIdMap.get(useRegcode));
    options.icon(BitmapDescriptorFactory.fromView(view));
    marker.setMarkerOptions(options);
    return marker;
}


    /**
     * 点击地图
     */
    private void resetMarker() {
        try {
            String lastUseRegcode = lastClickMarker.getObject().toString();
            if (lastClickMarker != null && !curUseRegcode.equals(lastUseRegcode))
                changeMarkerImg(lastClickMarker, lastUseRegcode, false);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

添加图标代码:

  for (int i = 0; i < size; i++) {
                                HttpDeviceLocationEntity.ItemDeviceLocationEntity itemEntity = dataListAll.get(i);
                                String[] locations = itemEntity.getCoordinate().split(",");
                                LatLng latLng = new LatLng(Double.parseDouble(locations[1]), Double.parseDouble(locations[0]));
                                int drawableId = ToolMapUtils.getElevatorDrawableId(itemEntity.getType(), itemEntity.getNextInspectDate(), itemEntity.getMaintainContractEDate());
                                String useRegCode = dataListAll.get(i).getUseRegCode();
                                Marker marker = aMap.addMarker(new MarkerOptions()
                                        .position(latLng)
                                        .icon(BitmapDescriptorFactory.fromResource(drawableId)));
                                marker.setObject(useRegCode);
                                drawableIdMap.put(useRegCode, drawableId);
                                markerList.add(marker);
                            }

效果如下:



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值