@@ -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====m arkerTag : " + markerShowEntity ) ;
Logger . e ( TAG , " 绘制Marker====drawMapM arker: " + 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 必须进行初始化!!!!! " ) ;