diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java new file mode 100644 index 0000000000..cf2918373c --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/marker/PoiWrapper.java @@ -0,0 +1,64 @@ +package com.mogo.module.common.marker; + +/** + * poi信息封装 + * + * @author tongchenfei + */ +public class PoiWrapper { + private int id; + private String poiType; + private int iconRes; + private String iconUrl; + private String title; + + public PoiWrapper(){ + + } + + public PoiWrapper(String poiType, int iconRes, String title) { + this.poiType = poiType; + this.iconRes = iconRes; + this.title = title; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getPoiType() { + return poiType; + } + + public void setPoiType(String poiType) { + this.poiType = poiType; + } + + public int getIconRes() { + return iconRes; + } + + public void setIconRes(int iconRes) { + this.iconRes = iconRes; + } + + public String getIconUrl() { + return iconUrl; + } + + public void setIconUrl(String iconUrl) { + this.iconUrl = iconUrl; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } +} diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java index b106e6f283..aa520db71d 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerInfoView.java @@ -16,8 +16,11 @@ import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerPoiTypeEnum; import com.mogo.module.common.entity.MarkerShareMusic; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.common.marker.PoiWrapper; import com.mogo.module.service.R; import com.mogo.module.service.ServiceConst; +import com.mogo.utils.glide.GlideApp; +import com.mogo.utils.logger.Logger; /** * author : donghongyu @@ -85,58 +88,21 @@ public class MapMarkerInfoView extends MapMarkerBaseView { ivIcon.setVisibility( View.VISIBLE ); if ( bindObj instanceof MarkerExploreWay && ( ( MarkerExploreWay ) bindObj ).getPoiType() != null ) { - switch ( ( ( MarkerExploreWay ) bindObj ).getPoiType() ) { - case MarkerPoiTypeEnum.GAS_STATION: - ivIcon.setImageResource( R.drawable.icon_map_marker_refuel ); - break; - case MarkerPoiTypeEnum.TRAFFIC_CHECK: - ivIcon.setImageResource( R.drawable.icon_map_marker_road_check2_white ); - break; - case MarkerPoiTypeEnum.ROAD_CLOSED: - ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_off2_white ); - break; - case MarkerPoiTypeEnum.SHOP_DISCOUNT: - ivIcon.setImageResource( R.drawable.icon_map_marker_shop_discount ); - break; - case MarkerPoiTypeEnum.FOURS_4S: - ivIcon.setImageResource( R.drawable.icon_map_marker_4s ); - break; - case MarkerPoiTypeEnum.FOURS_ROAD_WORK: - ivIcon.setImageResource( R.drawable.icon_map_marker_road_work2_white ); - break; - case MarkerPoiTypeEnum.FOURS_BLOCK_UP: - ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white ); - break; - case MarkerPoiTypeEnum.FOURS_PONDING: - ivIcon.setImageResource( R.drawable.icon_map_marker_pondingl2_white ); - break; - case MarkerPoiTypeEnum.FOURS_SHOP_FREE: - ivIcon.setImageResource( R.drawable.icon_map_marker_shop ); - break; - case MarkerPoiTypeEnum.FOURS_FOG: - ivIcon.setImageResource( R.drawable.module_service_ic_rc_dark_frog2_white ); - break; - case MarkerPoiTypeEnum.FOURS_ICE: - ivIcon.setImageResource( R.drawable.module_service_ic_rc_freeze2_white ); - break; - case MarkerPoiTypeEnum.FOURS_PARKING: - ivIcon.setImageResource( R.drawable.module_service_ic_rc_parking2 ); - break; - case MarkerPoiTypeEnum.FOURS_ACCIDENT: - ivIcon.setImageResource( R.drawable.module_service_ic_rc_accident3_white ); - break; - case MarkerPoiTypeEnum.FOURS_NEALY: - ivIcon.setImageResource( R.drawable.icon_map_marker_shear_news ); - break; - case MarkerPoiTypeEnum.FOURS_LIVING: - ivIcon.setImageResource( R.drawable.icon_map_marker_living_white ); - break; - case MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING: - ivIcon.setImageResource( R.drawable.module_service_ic_rc_illegal_park_white ); - break; - default: - ivIcon.setImageResource( R.drawable.icon_map_marker_road_block_up2_white ); - break; + // 根据poiType获取对应的图片 + String poiType = ((MarkerExploreWay) bindObj).getPoiType(); + PoiWrapper poiWrapper = + MapMarkerManager.getInstance().getWrapperByPoiType(poiType); + if (poiWrapper != null) { + // 加载图片 + if(poiWrapper.getIconUrl().isEmpty()){ + // 没有网络图片 + GlideApp.with(ivIcon).load(poiWrapper.getIconRes()).into(ivIcon); + }else{ + // 有网络图片 + GlideApp.with(ivIcon).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon); + } + }else{ + Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType); } } break; @@ -162,6 +128,8 @@ public class MapMarkerInfoView extends MapMarkerBaseView { } } + break; + default: break; } if ( !TextUtils.isEmpty( markerShowEntity.getTextContent() ) ) { diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java index d6830582c0..92fccbf0ff 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerManager.java @@ -3,6 +3,7 @@ package com.mogo.module.service.marker; import android.content.Context; import android.graphics.Rect; import android.text.TextUtils; +import android.util.ArrayMap; import android.view.animation.LinearInterpolator; import com.mogo.commons.AbsMogoApplication; @@ -22,9 +23,11 @@ import com.mogo.module.common.entity.MarkerExploreWay; import com.mogo.module.common.entity.MarkerLocation; import com.mogo.module.common.entity.MarkerNoveltyInfo; import com.mogo.module.common.entity.MarkerOnlineCar; +import com.mogo.module.common.entity.MarkerPoiTypeEnum; import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShareMusic; import com.mogo.module.common.entity.MarkerShowEntity; +import com.mogo.module.common.marker.PoiWrapper; import com.mogo.module.service.MarkerServiceHandler; import com.mogo.module.service.R; import com.mogo.module.service.ServiceConst; @@ -41,6 +44,8 @@ import com.mogo.utils.ThreadPoolService; import com.mogo.utils.UiThreadHandler; import com.mogo.utils.WorkThreadHandler; import com.mogo.utils.logger.Logger; +import com.mogo.utils.network.utils.GsonUtil; +import com.mogo.utils.storage.SharedPrefsMgr; import org.json.JSONArray; import org.json.JSONException; @@ -107,7 +112,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mContext = context.getApplicationContext(); mRefreshModel = new RefreshModel( mContext ); - + updateIconWithPoiType(); MarkerServiceHandler.getActionManager().registerBizActionDoneListener( this ); MarkerServiceHandler.getApis().getRegisterCenterApi().registerADASControlStatusChangedListener( TAG, this ); @@ -1025,4 +1030,58 @@ public class MapMarkerManager implements IMogoMarkerClickListener, mLastCheckMarker = null; } } + + private Map poiIconMap = new ArrayMap<>(); + public void updateIconWithPoiType(){ + // 先生成本地默认map + poiIconMap.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION, + R.drawable.icon_map_marker_refuel, "加油站")); + poiIconMap.put(MarkerPoiTypeEnum.TRAFFIC_CHECK, new PoiWrapper(MarkerPoiTypeEnum.TRAFFIC_CHECK, + R.drawable.icon_map_marker_road_check2_white, "交通检查")); + poiIconMap.put(MarkerPoiTypeEnum.ROAD_CLOSED, new PoiWrapper(MarkerPoiTypeEnum.ROAD_CLOSED, + R.drawable.icon_map_marker_road_block_off2_white, "封路")); + poiIconMap.put(MarkerPoiTypeEnum.SHOP_DISCOUNT, new PoiWrapper(MarkerPoiTypeEnum.SHOP_DISCOUNT, + R.drawable.icon_map_marker_shop_discount, "商场打折")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_4S, new PoiWrapper(MarkerPoiTypeEnum.FOURS_4S, + R.drawable.icon_map_marker_4s, "4S店")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK, + R.drawable.icon_map_marker_road_work2_white, "施工")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_BLOCK_UP, new PoiWrapper(MarkerPoiTypeEnum.FOURS_BLOCK_UP, + R.drawable.icon_map_marker_road_block_up2_white, "拥堵")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING, + R.drawable.icon_map_marker_pondingl2_white, "积水")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_SHOP_FREE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_SHOP_FREE, + R.drawable.icon_map_marker_shop, "超时打折")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG, + R.drawable.module_service_ic_rc_dark_frog2_white, "浓雾")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_ICE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ICE, + R.drawable.module_service_ic_rc_freeze2_white, "结冰")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_PARKING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PARKING, + R.drawable.module_service_ic_rc_parking2, "停车场")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT, + R.drawable.module_service_ic_rc_accident3_white, "事故")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_NEALY, new PoiWrapper(MarkerPoiTypeEnum.FOURS_NEALY, + R.drawable.icon_map_marker_shear_news, "身边")); + poiIconMap.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_LIVING, + R.drawable.icon_map_marker_living_white, "实时路况")); + poiIconMap.put(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING, new PoiWrapper(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING, + R.drawable.module_service_ic_rc_illegal_park_white, "违章停车")); + // 从sp中获取config属性,将服务端配置内容合并到本地 + String config = SharedPrefsMgr.getInstance(mContext).getString("SHARE_BUTTON_CONFIG", ""); + if (!config.isEmpty()) { + List configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class); + if(configWrappers!=null) { + for (PoiWrapper wrapper : configWrappers) { + poiIconMap.put(wrapper.getPoiType(), wrapper); + } + }else{ + Logger.e(TAG, "解析configWrapper异常: " + config); + } + } + } + + public PoiWrapper getWrapperByPoiType(String poiType) { + return poiIconMap.get(poiType); + } + } diff --git a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java index 2b98266a01..dc4b8e040b 100644 --- a/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java +++ b/modules/mogo-module-share/src/main/java/com/mogo/module/share/ShareControl.java @@ -21,6 +21,7 @@ import com.mogo.module.authorize.authprovider.invoke.AuthorizeInvokerConstant; import com.mogo.module.authorize.authprovider.module.IMogoAcquireAuthorizeListener; import com.mogo.module.authorize.authprovider.module.IMogoAuthorizeModuleManager; import com.mogo.module.common.dialog.BaseFloatDialog; +import com.mogo.module.service.marker.MapMarkerManager; import com.mogo.module.share.bean.FixableButton; import com.mogo.module.share.bean.ShareButtonConfigResponse; import com.mogo.module.share.bean.ShareConfigRequest; @@ -477,6 +478,7 @@ public class ShareControl implements IMogoShareManager, Handler.Callback { } Logger.d(TAG, "获取分享框配置成功: " + config); SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config); + MapMarkerManager.getInstance().updateIconWithPoiType(); } @Override