完成了Marker样式跟随卡片的切换整体高亮

This commit is contained in:
董宏宇
2020-01-14 21:07:41 +08:00
parent 79775f4854
commit c5a08d2f74
7 changed files with 116 additions and 11 deletions

View File

@@ -20,6 +20,8 @@ import com.mogo.module.common.entity.MarkerShareMusic;
import com.mogo.module.common.entity.MarkerShowEntity;
import com.mogo.module.service.marker.MapMarkerAdapter;
import com.mogo.service.MogoServicePaths;
import com.mogo.service.cardmanager.IMogoCardChangedListener;
import com.mogo.service.cardmanager.IMogoCardManager;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.service.imageloader.IMogoImageloader;
@@ -27,6 +29,7 @@ import com.mogo.service.map.IMogoMapService;
import com.mogo.service.statusmanager.IMogoStatusManager;
import com.mogo.utils.logger.Logger;
import java.util.ArrayList;
import java.util.List;
/**
@@ -49,6 +52,7 @@ public class MarkerServiceHandler {
private static IMogoStatusManager mMogoStatusManager;
private static IMogoImageloader mImageloader;
private static IMogoSocketManager mMogoSocketManager;
private static IMogoCardManager mMogoCardManager;
private static Context mContext;
@@ -57,14 +61,16 @@ public class MarkerServiceHandler {
mMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(context);
mImageloader = (IMogoImageloader) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_IMAGE_LOADER).navigation(context);
mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation(context);
mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation(context);
mMogoSocketManager = (IMogoSocketManager) ARouter.getInstance().build(MogoServicePaths.PATH_SOCKET_MANAGER).navigation();
mMogoCardManager = (IMogoCardManager) ARouter.getInstance().build(MogoServicePaths.PATH_CARD_MANAGER).navigation();
mMarkerManager = mMapService.getMarkerManager(context);
mNavi = mMapService.getNavi(context);
mMapUIController = mMapService.getMapUIController();
mogoMarkerClickListener = new MoGoMarkerClickListener();
// 长连接
mMogoSocketManager = (IMogoSocketManager) ARouter.getInstance().build(MogoServicePaths.PATH_SOCKET_MANAGER).navigation();
mMogoSocketManager.registerOnMessageListener(401001, new IMogoOnMessageListener<MarkerResponse>() {
@Override
@@ -80,6 +86,15 @@ public class MarkerServiceHandler {
}
}
});
getMogoCardManager().registerCardChangedListener("LAUNCHER_MARKER_MODULE", new IMogoCardChangedListener() {
@Override
public void onSwitched(int position, String moduleName) {
Logger.e(TAG, "======moduleName" + moduleName);
highlightedMarker(moduleName);
}
});
}
public static IMogoMapService getMapService() {
@@ -110,6 +125,9 @@ public class MarkerServiceHandler {
return mMogoStatusManager;
}
public static IMogoCardManager getMogoCardManager() {
return mMogoCardManager;
}
private static IMogoMarker lastMarker;
@@ -134,7 +152,7 @@ public class MarkerServiceHandler {
Logger.e(TAG, "onMarkerClicked 点击了大而全中的Marker lastMarkerShowEntity" + lastMarkerShowEntity);
lastMarkerShowEntity.setChecked(false);
drawMapMarker(lastMarkerShowEntity);
drawMapMarkerItem(lastMarkerShowEntity);
lastMarker.remove();
}
@@ -145,13 +163,38 @@ public class MarkerServiceHandler {
markerShowEntity.setChecked(true);
lastMarker = drawMapMarker(markerShowEntity);
lastMarker = drawMapMarkerItem(markerShowEntity);
marker.remove();
return false;
}
}
// 记录所有的Marker
private static List<MarkerShowEntity> markerShowEntities;
// 对指定类型高亮处理
public static void highlightedMarker(String typeTag) {
if (markerShowEntities != null) {
if (lastMarker != null) {
// 将上次选中 Marker 设置为未选中状态
MarkerShowEntity lastMarkerShowEntity = (MarkerShowEntity) lastMarker.getObject();
lastMarkerShowEntity.setChecked(false);
drawMapMarkerItem(lastMarkerShowEntity);
}
lastMarker = null;
getMarkerManager().removeMarkers();
for (MarkerShowEntity markerShowEntity : markerShowEntities) {
if (markerShowEntity.getMarkerType().equals(typeTag)) {
markerShowEntity.setHighlighted(true);
} else {
markerShowEntity.setHighlighted(false);
}
drawMapMarkerItem(markerShowEntity);
}
}
}
/**
* 绘制Marker
@@ -238,7 +281,7 @@ public class MarkerServiceHandler {
* 绘制Marker
*/
public static IMogoMarker drawMapMarker(MarkerShowEntity markerShowEntity) {
Logger.e(TAG, "绘制Marker====markerTag" + markerShowEntity);
Logger.e(TAG, "绘制Marker====drawMapMarker" + markerShowEntity);
try {
if (markerShowEntity.getMarkerLocation() != null) {
View markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity);
@@ -252,6 +295,40 @@ public class MarkerServiceHandler {
IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject(markerShowEntity);
if (markerShowEntities == null) {
markerShowEntities = new ArrayList<>();
}
markerShowEntities.add(markerShowEntity);
return marker;
} else {
Logger.e(TAG, "Location 必须进行初始化!!!!!");
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 绘制Marker
*/
public static IMogoMarker drawMapMarkerItem(MarkerShowEntity markerShowEntity) {
Logger.e(TAG, "绘制Marker====drawMapMarkerItem" + markerShowEntity);
try {
if (markerShowEntity.getMarkerLocation() != null) {
View markerView = MapMarkerAdapter.getMarkerView(mContext, markerShowEntity);
MogoMarkerOptions options = new MogoMarkerOptions()
.owner(markerShowEntity.getMarkerType())
.latitude(markerShowEntity.getMarkerLocation().getLat())
.longitude(markerShowEntity.getMarkerLocation().getLon());
options.icon(markerView);
IMogoMarker marker = getMarkerManager().addMarker(markerShowEntity.getMarkerType(), options);
marker.setOnMarkerClickListener(mogoMarkerClickListener);
marker.setObject(markerShowEntity);
return marker;
} else {
Logger.e(TAG, "Location 必须进行初始化!!!!!");

View File

@@ -57,6 +57,12 @@ public class MapMarkerView extends MapMarkerBaseView {
try {
Object bindObj = markerShowEntity.getBindObj();
if (markerShowEntity.isHighlighted()) {
ivBg.setAlpha(1f);
} else {
ivBg.setAlpha(0.7f);
}
switch (markerShowEntity.getMarkerType()) {
case ServiceConst.CARD_TYPE_CARS_CHATTING:
case ServiceConst.CARD_TYPE_USER_DATA:

View File

@@ -57,7 +57,7 @@ public class RefreshModel {
if ( mRefreshApiService != null ) {
final Map< String, Object > query = new ParamsProvider.Builder( mContext ).build();
final RefreshBody refreshBody = new RefreshBody();
refreshBody.limit = 20;
refreshBody.limit = 5;
refreshBody.location = new RefreshBody.LatLon( latLng.lat, latLng.lng );
refreshBody.radius = radius;
query.put( "data", GsonUtil.jsonFromObject( refreshBody ) );