增加poi点服务端可配功能

This commit is contained in:
tongchenfei
2020-11-02 15:36:33 +08:00
parent 597adb83d4
commit 77f957e88d
35 changed files with 129 additions and 91 deletions

View File

@@ -0,0 +1,106 @@
package com.mogo.module.common.utils;
import android.content.Context;
import android.util.ArrayMap;
import com.mogo.module.common.R;
import com.mogo.module.common.entity.MarkerPoiTypeEnum;
import com.mogo.module.common.marker.PoiWrapper;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.utils.GsonUtil;
import com.mogo.utils.storage.SharedPrefsMgr;
import java.util.List;
import java.util.Map;
/**
* 云端配置poi数据管理公共类
*
* @author tongchenfei
*/
public class CloudPoiManager {
private static final String TAG = "CloudPoiManager";
private Map<String, PoiWrapper> poiWrapper = new ArrayMap<>();
private static CloudPoiManager instance = null;
public static CloudPoiManager getInstance(){
if (instance == null) {
synchronized (CloudPoiManager.class) {
if (instance == null) {
instance = new CloudPoiManager();
}
}
}
return instance;
}
public void generateDefault(){
if (poiWrapper.isEmpty()) {
poiWrapper.put(MarkerPoiTypeEnum.GAS_STATION, new PoiWrapper(MarkerPoiTypeEnum.GAS_STATION,R.drawable.module_common_icon_map_marker_refuel,
R.drawable.module_common_icon_map_marker_refuel, "加油站"));
poiWrapper.put(MarkerPoiTypeEnum.TRAFFIC_CHECK, new PoiWrapper(MarkerPoiTypeEnum.TRAFFIC_CHECK,
R.drawable.module_common_icon_map_marker_road_check2,R.drawable.module_common_icon_map_marker_road_check2_white, "交通检查"));
poiWrapper.put(MarkerPoiTypeEnum.ROAD_CLOSED, new PoiWrapper(MarkerPoiTypeEnum.ROAD_CLOSED,
R.drawable.module_common_icon_map_marker_road_block_off2,R.drawable.module_common_icon_map_marker_road_block_off2_white, "封路"));
poiWrapper.put(MarkerPoiTypeEnum.SHOP_DISCOUNT, new PoiWrapper(MarkerPoiTypeEnum.SHOP_DISCOUNT,
R.drawable.module_common_icon_map_marker_shop_discount,R.drawable.module_common_icon_map_marker_shop_discount, "商场打折"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_4S, new PoiWrapper(MarkerPoiTypeEnum.FOURS_4S,
R.drawable.module_common_icon_map_marker_4s,R.drawable.module_common_icon_map_marker_4s, "4S店"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK,
R.drawable.module_common_icon_map_marker_road_work2,R.drawable.module_common_icon_map_marker_road_work2_white, "施工"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_BLOCK_UP, new PoiWrapper(MarkerPoiTypeEnum.FOURS_BLOCK_UP,
R.drawable.module_common_icon_map_marker_road_block_up2,R.drawable.module_common_icon_map_marker_road_block_up2_white, "拥堵"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_PONDING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PONDING,
R.drawable.module_common_icon_map_marker_pondingl2,R.drawable.module_common_icon_map_marker_pondingl2_white, "积水"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_SHOP_FREE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_SHOP_FREE,
R.drawable.module_common_icon_map_marker_shop,R.drawable.module_common_icon_map_marker_shop, "超时打折"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_FOG, new PoiWrapper(MarkerPoiTypeEnum.FOURS_FOG,
R.drawable.module_common_ic_rc_dark_frog2,R.drawable.module_common_ic_rc_dark_frog2_white, "浓雾"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ICE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ICE,
R.drawable.module_common_ic_rc_freeze2,R.drawable.module_common_ic_rc_freeze2_white, "结冰"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_PARKING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_PARKING,
R.drawable.module_common_ic_rc_parking2,R.drawable.module_common_ic_rc_parking2, "停车场"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_ACCIDENT, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ACCIDENT,
R.drawable.module_common_ic_rc_accident3,R.drawable.module_common_ic_rc_accident3_white, "事故"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_NEALY, new PoiWrapper(MarkerPoiTypeEnum.FOURS_NEALY,
R.drawable.module_common_icon_map_marker_shear_news,R.drawable.module_common_icon_map_marker_shear_news, "身边"));
poiWrapper.put(MarkerPoiTypeEnum.FOURS_LIVING, new PoiWrapper(MarkerPoiTypeEnum.FOURS_LIVING,
R.drawable.module_common_icon_map_marker_living,R.drawable.module_common_icon_map_marker_living_white, "实时路况"));
poiWrapper.put(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING, new PoiWrapper(MarkerPoiTypeEnum.ILLEGAL_PARK_LIVING,
R.drawable.module_common_ic_rc_illegal_park,R.drawable.module_common_ic_rc_illegal_park_white, "违章停车"));
// 分享里用到的故障求助
poiWrapper.put("9999", new PoiWrapper("9999",
R.drawable.module_common_icon_seek_help,R.drawable.module_common_icon_seek_help, "故障求助"));
}
}
public void updateFromConfig(Context context) {
generateDefault();
// 从sp中获取config属性将服务端配置内容合并到本地
String config = SharedPrefsMgr.getInstance(context).getString("SHARE_BUTTON_CONFIG", "");
if (!config.isEmpty()) {
List<PoiWrapper> configWrappers = GsonUtil.arrayFromJson(config, PoiWrapper.class);
if(configWrappers!=null) {
for (PoiWrapper wrapper : configWrappers) {
wrapper.setIconInfoRes(R.drawable.module_common_icon_map_marker_road_block_up2_white);
wrapper.setIconRes(R.drawable.module_common_icon_map_marker_road_block_up2);
if(poiWrapper.containsKey(wrapper.getPoiType())) {
PoiWrapper defWrapper = poiWrapper.get(wrapper.getPoiType());
if(defWrapper!=null) {
wrapper.setIconRes(defWrapper.getIconRes());
wrapper.setIconInfoRes(defWrapper.getIconInfoRes());
}
}
poiWrapper.put(wrapper.getPoiType(), wrapper);
}
}else{
Logger.e(TAG, "解析configWrapper异常: " + config);
}
}
}
public PoiWrapper getWrapperByPoiType(String poiType) {
return poiWrapper.get(poiType);
}
}