From 51419c269fe9d69c59960017205b0393e498b180 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=91=A3=E5=AE=8F=E5=AE=87?= Date: Fri, 10 Jan 2020 20:54:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=87=86=E5=A4=87=E8=BF=9B=E8=A1=8Cmarker?= =?UTF-8?q?=E7=9A=84=E6=A0=B7=E5=BC=8F=E6=9B=BF=E6=8D=A2=E6=8A=BD=E7=A6=BB?= =?UTF-8?q?=E6=93=8D=E4=BD=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/MarkerShowEntity.java | 64 +++++++++++++++++++ .../src/main/res/values-ldpi/dimens.xml | 1 - .../src/main/res/values-xhdpi/dimens.xml | 3 - .../src/main/res/values/dimens.xml | 3 - .../module/service/MarkerServiceHandler.java | 24 +++---- .../service/marker/MapMarkerAdapter.java | 32 ++++++++++ .../service/marker/MapMarkerInfoView.java | 6 +- .../module/service/marker/MapMarkerView.java | 5 +- .../marker/MarkerInfoWindowAdapter.java | 39 ----------- 9 files changed, 114 insertions(+), 63 deletions(-) create mode 100644 modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java create mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerAdapter.java delete mode 100644 modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MarkerInfoWindowAdapter.java diff --git a/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java new file mode 100644 index 0000000000..72ebf7823e --- /dev/null +++ b/modules/mogo-module-common/src/main/java/com/mogo/module/common/entity/MarkerShowEntity.java @@ -0,0 +1,64 @@ +package com.mogo.module.common.entity; + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020-01-1015:47 + * desc : 用来跟Marker View 绑定使用,内容、状态等设置 + * version: 1.0 + */ +public class MarkerShowEntity { + + // false - 没选中,true - 选中 + private boolean isChecked; + // icon 地址,例如:头像,唱片图片,探路缩略 + private String iconUrl; + // 要展示的文本 + private String textContent; + // Marker 类型 + private String markerType; + + // 绑定 MarkerView 的数据 + private Object bindObj; + + public boolean isChecked() { + return isChecked; + } + + public void setChecked(boolean checked) { + isChecked = checked; + } + + public String getIconUrl() { + return iconUrl; + } + + public void setIconUrl(String iconUrl) { + this.iconUrl = iconUrl; + } + + public String getTextContent() { + return textContent; + } + + public void setTextContent(String textContent) { + this.textContent = textContent; + } + + public String getMarkerType() { + return markerType; + } + + public void setMarkerType(String markerType) { + this.markerType = markerType; + } + + + public Object getBindObj() { + return bindObj; + } + + public void setBindObj(Object bindObj) { + this.bindObj = bindObj; + } +} diff --git a/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml index b524c9d277..1e7b7a3622 100644 --- a/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml +++ b/modules/mogo-module-common/src/main/res/values-ldpi/dimens.xml @@ -1,6 +1,5 @@ - @dimen/dp_15 -30.0000px -15.0000px -10.0000px diff --git a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml index df457700f7..969c397a02 100644 --- a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml +++ b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml @@ -1,9 +1,6 @@ - - @dimen/dp_15 - -60px diff --git a/modules/mogo-module-common/src/main/res/values/dimens.xml b/modules/mogo-module-common/src/main/res/values/dimens.xml index df457700f7..969c397a02 100644 --- a/modules/mogo-module-common/src/main/res/values/dimens.xml +++ b/modules/mogo-module-common/src/main/res/values/dimens.xml @@ -1,9 +1,6 @@ - - @dimen/dp_15 - -60px diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java index 4d405b2371..9bd21058cb 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/MarkerServiceHandler.java @@ -18,13 +18,12 @@ import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.common.entity.MarkerShareMusic; import com.mogo.module.service.marker.MapMarkerInfoView; import com.mogo.module.service.marker.MapMarkerView; -import com.mogo.module.service.marker.MarkerInfoWindowAdapter; import com.mogo.service.MogoServicePaths; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.connection.IMogoSocketManager; import com.mogo.service.imageloader.IMogoImageloader; import com.mogo.service.map.IMogoMapService; -import com.mogo.service.module.IMogoRegisterCenter; +import com.mogo.service.statusmanager.IMogoStatusManager; import com.mogo.utils.logger.Logger; import java.util.List; @@ -47,10 +46,9 @@ public class MarkerServiceHandler { private static IMogoNavi mNavi; private static IMogoMapUIController mMapUIController; - private static IMogoRegisterCenter mMogoRegisterCenter; + private static IMogoStatusManager mMogoStatusManager; private static IMogoImageloader mImageloader; private static IMogoSocketManager mMogoSocketManager; - private static MarkerInfoWindowAdapter markerInfoWindowAdapter; private static Context mContext; @@ -58,10 +56,9 @@ public class MarkerServiceHandler { mContext = context; mMapService = (IMogoMapService) ARouter.getInstance().build(MogoServicePaths.PATH_SERVICES_MAP).navigation(context); mImageloader = (IMogoImageloader) ARouter.getInstance().build(MogoServicePaths.PATH_UTILS_IMAGE_LOADER).navigation(context); - mMogoRegisterCenter = (IMogoRegisterCenter) ARouter.getInstance().build(MogoServicePaths.PATH_REGISTER_CENTER).navigation(context); + mMogoStatusManager = (IMogoStatusManager) ARouter.getInstance().build(MogoServicePaths.PATH_STATUS_MANAGER).navigation(context); mMarkerManager = mMapService.getMarkerManager(context); mNavi = mMapService.getNavi(context); - markerInfoWindowAdapter = new MarkerInfoWindowAdapter(context, getNavi(), getImageloader()); mMapUIController = mMapService.getMapUIController(); mogoMarkerClickListener = new MoGoMarkerClickListener(); @@ -78,7 +75,9 @@ public class MarkerServiceHandler { @Override public void onMsgReceived(MarkerResponse response) { Logger.e(TAG, "===" + response); - drawMapMarker(response); + if (!getMogoStatusManager().isSearchUIShow()) { + drawMapMarker(response); + } } }); } @@ -107,6 +106,10 @@ public class MarkerServiceHandler { return mMogoSocketManager; } + public static IMogoStatusManager getMogoStatusManager() { + return mMogoStatusManager; + } + private static IMogoMarker lastMarker; @@ -119,6 +122,7 @@ public class MarkerServiceHandler { public boolean onMarkerClicked(IMogoMarker marker) { Logger.e(TAG, "点击了大而全中的Marker"); if (lastMarker != null) { + // 重置为默认状态 MapMarkerView mapMarkerView = new MapMarkerView(mContext); MogoMarkerOptions options = new MogoMarkerOptions() @@ -128,7 +132,6 @@ public class MarkerServiceHandler { .longitude(lastMarker.getPosition().getLng()); IMogoMarker newMarker = getMarkerManager().addMarker(lastMarker.getOwner(), options); - newMarker.setInfoWindowAdapter(markerInfoWindowAdapter); newMarker.setOnMarkerClickListener(mogoMarkerClickListener); newMarker.setObject(lastMarker.getObject()); @@ -136,7 +139,7 @@ public class MarkerServiceHandler { } - // + // 绘制选中的状态 MapMarkerInfoView mapMarkerInfoView = new MapMarkerInfoView(mContext); MogoMarkerOptions options = new MogoMarkerOptions() .icon(mapMarkerInfoView) @@ -145,7 +148,6 @@ public class MarkerServiceHandler { .longitude(marker.getPosition().getLng()); IMogoMarker newMarker = getMarkerManager().addMarker(marker.getOwner(), options); - newMarker.setInfoWindowAdapter(markerInfoWindowAdapter); newMarker.setOnMarkerClickListener(mogoMarkerClickListener); newMarker.setObject(marker.getObject()); @@ -236,7 +238,6 @@ public class MarkerServiceHandler { options.icon(mapMarkerView); IMogoMarker marker = getMarkerManager().addMarker(markerTag, options); - marker.setInfoWindowAdapter(markerInfoWindowAdapter); marker.setOnMarkerClickListener(mogoMarkerClickListener); marker.setObject(bindObject); } @@ -254,7 +255,6 @@ public class MarkerServiceHandler { .latitude(39.574525d + new Random().nextDouble()) .longitude(116.21733d + new Random().nextDouble()); IMogoMarker marker = getMarkerManager().addMarker("CARD_TYPE_USER_DATA", options); - marker.setInfoWindowAdapter(markerInfoWindowAdapter); marker.setOnMarkerClickListener(mogoMarkerClickListener); marker.setObject("我是Marker上面绑定的数据"); diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerAdapter.java new file mode 100644 index 0000000000..fefd8712c0 --- /dev/null +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerAdapter.java @@ -0,0 +1,32 @@ +package com.mogo.module.service.marker; + +import android.content.Context; +import android.view.View; + +import com.mogo.module.common.entity.MarkerShowEntity; + +/** + * author : donghongyu + * e-mail : 1358506549@qq.com + * date : 2020-01-1015:55 + * desc : 地图Marker的适配器 + * version: 1.0 + */ +public class MapMarkerAdapter { + + /** + * 获取 MarkerShowEntity 填充好的 MarkerView + * + * @param context 上下文 + * @param markerShowEntity 要填充的数据 + * @return MarkerView + */ + public static View getMarkerView(Context context, MarkerShowEntity markerShowEntity) { + + if (markerShowEntity.isChecked()) { + return new MapMarkerView(context); + } else { + return new MapMarkerInfoView(context); + } + } +} 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 97223ecf63..49ae295243 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 @@ -3,7 +3,6 @@ package com.mogo.module.service.marker; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; -import android.widget.LinearLayout; import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; @@ -18,6 +17,8 @@ import com.mogo.module.service.R; * version: 1.0 */ public class MapMarkerInfoView extends ConstraintLayout { + private Context mContext; + public MapMarkerInfoView(Context context) { super(context); initView(context); @@ -35,9 +36,8 @@ public class MapMarkerInfoView extends ConstraintLayout { private void initView(Context context) { - + mContext = context; LayoutInflater.from(context).inflate(R.layout.view_map_marker_info, this); - } } diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java index 4663420ddf..129284a85b 100644 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java +++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerView.java @@ -17,6 +17,8 @@ import com.mogo.module.service.R; * version: 1.0 */ public class MapMarkerView extends ConstraintLayout { + private Context mContext; + public MapMarkerView(Context context) { super(context); initView(context); @@ -34,9 +36,8 @@ public class MapMarkerView extends ConstraintLayout { private void initView(Context context) { - + mContext = context; LayoutInflater.from(context).inflate(R.layout.view_map_marker, this); - } } \ No newline at end of file diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MarkerInfoWindowAdapter.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MarkerInfoWindowAdapter.java deleted file mode 100644 index 37173150b2..0000000000 --- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MarkerInfoWindowAdapter.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.mogo.module.service.marker; - -import android.content.Context; -import android.view.View; - -import com.mogo.map.marker.IMogoInfoWindowAdapter; -import com.mogo.map.marker.IMogoMarker; -import com.mogo.map.navi.IMogoNavi; -import com.mogo.service.imageloader.IMogoImageloader; -import com.mogo.utils.logger.Logger; - -/** - * author : donghongyu - * e-mail : 1358506549@qq.com - * date : 2020-01-0818:11 - * desc : - * version: 1.0 - */ -public class MarkerInfoWindowAdapter implements IMogoInfoWindowAdapter { - - private static final String TAG = "MarkerInfoWindowAdapter"; - - private Context mContext; - private IMogoNavi mNavi; - private IMogoImageloader mImageloader; - - public MarkerInfoWindowAdapter(Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader) { - this.mContext = mContext; - this.mNavi = mNavi; - this.mImageloader = iMogoImageloader; - } - - @Override - public View getInfoWindow(IMogoMarker marker) { - Logger.e(TAG,"getInfoWindow===="); - MapMarkerInfoView mapMarkerInfoView = new MapMarkerInfoView(mContext); - return mapMarkerInfoView; - } -}