diff --git a/.idea/gradle.xml b/.idea/gradle.xml
index 77f6cae560..8853517620 100644
--- a/.idea/gradle.xml
+++ b/.idea/gradle.xml
@@ -79,7 +79,6 @@
-
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
index 4c7f3e977a..dbaeb372c9 100644
--- 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
@@ -11,7 +11,9 @@ public class PoiWrapper {
private int iconRes;
private int iconInfoRes;
private String iconUrl = "";
+ // "https://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/defaultUserHeadImg/VN000012.jpg";
private String iconInfoUrl = "";
+ // "http://yycp-static-1255510688.cos.ap-beijing.myqcloud.com/sso-server-image/1596705960869.png";
private String title = "拥堵";
public PoiWrapper(){
diff --git a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
index c790f05e65..4ffecc4c40 100644
--- a/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
+++ b/modules/mogo-module-service/src/main/java/com/mogo/module/service/marker/MapMarkerBaseView.java
@@ -15,9 +15,12 @@ import android.widget.TextView;
import androidx.annotation.Nullable;
import androidx.constraintlayout.widget.ConstraintLayout;
+import com.facebook.drawee.backends.pipeline.PipelineDraweeControllerBuilder;
+import com.facebook.drawee.interfaces.DraweeController;
import com.mogo.map.marker.IMogoMarker;
import com.mogo.map.marker.MogoMarkerOptions;
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.service.imageloader.IMogoImageLoaderListener;
@@ -39,7 +42,7 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
protected Context mContext;
protected MogoMarkerOptions mOptions;
protected MogoImageView ivUserHead;
- protected ImageView ivIcon;
+ protected MogoImageView ivIcon;
protected ImageView ivCar;
protected IMogoMarker mMarker;
@@ -81,6 +84,48 @@ public abstract class MapMarkerBaseView extends LinearLayout implements IMarkerV
}
}
+ protected void loadPoiTypeIcon(String url,int res) {
+ if ( Looper.myLooper() != Looper.getMainLooper() ) {
+ UiThreadHandler.post( ()-> loadPoiTypeIconInUiThread(url, res));
+ } else {
+ loadPoiTypeIconInUiThread(url, res);
+ }
+ }
+
+ private void loadPoiTypeIconInUiThread(String url,int res) {
+ if (!url.isEmpty()) {
+ ivIcon.setPlaceHolder(res);
+ ivIcon.setFailureHolder(res);
+ MarkerServiceHandler.getImageloader().displayImage(url,
+ ivIcon, WindowUtils.dip2px(mContext, 50), WindowUtils.dip2px(mContext, 50),
+ new IMogoImageLoaderListener() {
+ @Override
+ public void onStart() {
+
+ }
+
+ @Override
+ public void onCompleted(Bitmap bitmap) {
+ Logger.d(TAG, "loadImageWithMarker loaded.");
+ // 使用view渲染地图marker,刷新纹理的时候,需要重新用view生成纹理,然后在设置
+ if (mMarker != null) {
+ mMarker.setIcon(fromView(MapMarkerBaseView.this));
+ }
+ }
+
+ @Override
+ public void onFailure(Exception e) {
+ Logger.e(TAG, "loadImageWithMarker onFailure.");
+ }
+ });
+ }else{
+ ivIcon.setImageResource(res);
+ }
+ if (mMarker != null) {
+ mMarker.setIcon(fromView(MapMarkerBaseView.this));
+ }
+ }
+
private void runOnUiThread(final MarkerShowEntity markerShowEntity){
if (!TextUtils.isEmpty(markerShowEntity.getIconUrl())) {
MarkerServiceHandler.getImageloader().displayImage(markerShowEntity.getIconUrl(),
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 97ade941ab..bf3e59126e 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
@@ -54,16 +54,19 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
updateView( markerShowEntity );
}
+ @Override
protected void initView( Context context ) {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout_info, this );
ivUserHead = findViewById( R.id.ivUserHead );
- ivIcon = findViewById( R.id.ivIcon );
+// ivIcon = findViewById( R.id.ivIcon );
+ ivIcon = findViewById(R.id.ivIcon);
clMarkerContent = findViewById( R.id.clMarkerContent );
ivReverseTriangle = findViewById( R.id.ivReverseTriangle );
ivCar = findViewById( R.id.ivCar );
tvMarkerContent = findViewById( R.id.tvMarkerContent );
}
+ @Override
public void updateView( MarkerShowEntity markerShowEntity ) {
try {
@@ -94,13 +97,7 @@ public class MapMarkerInfoView extends MapMarkerBaseView {
MapMarkerManager.getInstance().getWrapperByPoiType(poiType);
if (poiWrapper != null) {
// 加载图片
- if(poiWrapper.getIconInfoUrl().isEmpty()){
- // 没有网络图片
- GlideApp.with(getContext()).load(poiWrapper.getIconInfoRes()).into(ivIcon);
- }else{
- // 有网络图片
- GlideApp.with(getContext()).load(poiWrapper.getIconInfoUrl()).placeholder(poiWrapper.getIconInfoRes()).into(ivIcon);
- }
+ loadPoiTypeIcon(poiWrapper.getIconInfoUrl(),poiWrapper.getIconInfoRes());
}else{
Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染info marker====" + poiType);
}
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 d7e275b973..cd352781d6 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
@@ -209,6 +209,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
markerShowEntity.setChecked( true );
IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ markerView.setMarker(mogoMarker);
if ( markerView instanceof OnlineCarMarkerView ) {
try {
mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) );
@@ -254,6 +255,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
MarkerShowEntity markerShowEntity = ( MarkerShowEntity ) object;
markerShowEntity.setChecked( false );
IMarkerView markerView = MapMarkerAdapter.getMarkerView( mContext, markerShowEntity, mogoMarker.getMogoMarkerOptions() );
+ markerView.setMarker(mogoMarker);
if ( markerView instanceof OnlineCarMarkerView ) {
try {
mogoMarker.setIcon( markerView.getBitmap( ( ( MarkerOnlineCar ) markerShowEntity.getBindObj() ).getCarInfo().getVehicleType() ) );
@@ -1047,7 +1049,7 @@ public class MapMarkerManager implements IMogoMarkerClickListener,
poiIconMap.put(MarkerPoiTypeEnum.FOURS_ROAD_WORK, new PoiWrapper(MarkerPoiTypeEnum.FOURS_ROAD_WORK,
R.drawable.icon_map_marker_road_work2,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,R.drawable.icon_map_marker_road_block_up2, "拥堵"));
+ R.drawable.icon_map_marker_road_block_up2,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,R.drawable.icon_map_marker_pondingl2_white, "积水"));
poiIconMap.put(MarkerPoiTypeEnum.FOURS_SHOP_FREE, new PoiWrapper(MarkerPoiTypeEnum.FOURS_SHOP_FREE,
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 ea07feb9cd..cecd7b4908 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
@@ -44,12 +44,14 @@ public class MapMarkerView extends MapMarkerBaseView {
updateView( markerShowEntity );
}
+ @Override
protected void initView( Context context ) {
LayoutInflater.from( context ).inflate( R.layout.modudle_services_marker_layout, this );
ivIcon = findViewById( R.id.ivIcon );
ivCar = findViewById( R.id.ivCar );
}
+ @Override
public void updateView( MarkerShowEntity markerShowEntity ) {
try {
Object bindObj = markerShowEntity.getBindObj();
@@ -63,13 +65,7 @@ public class MapMarkerView extends MapMarkerBaseView {
MapMarkerManager.getInstance().getWrapperByPoiType(poiType);
if (poiWrapper != null) {
// 加载图片
- if(poiWrapper.getIconUrl().isEmpty()){
- // 没有网络图片
- GlideApp.with(getContext()).load(poiWrapper.getIconRes()).into(ivIcon);
- }else{
- // 有网络图片
- GlideApp.with(getContext()).load(poiWrapper.getIconUrl()).placeholder(poiWrapper.getIconRes()).into(ivIcon);
- }
+ loadPoiTypeIcon(poiWrapper.getIconUrl(),poiWrapper.getIconRes());
}else{
Logger.e(TAG, "未能根据poiType获取对应poi信息,无法渲染marker====" + poiType);
}
diff --git a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
index 077f3060a0..d056cf267e 100644
--- a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
+++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout.xml
@@ -15,12 +15,11 @@
android:background="@drawable/module_services_marker_bkg"
android:layout_height="@dimen/module_service_marker_bubble_height">
-
diff --git a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml
index 716498569a..a8b9a0e207 100644
--- a/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml
+++ b/modules/mogo-module-service/src/main/res/layout/modudle_services_marker_layout_info.xml
@@ -30,12 +30,11 @@
app:miv_placeHolder="@drawable/icon_default_user_head"
app:miv_shape="circle" />
- () {
@Override
public void onResourceReady( @NonNull Bitmap resource, @Nullable Transition< ? super Bitmap > transition ) {
+ imageView.setImageResource( 0 );
+ imageView.setImageBitmap( resource );
if ( listener != null ) {
listener.onCompleted( resource );
}
- imageView.setImageResource( 0 );
- imageView.setImageBitmap( resource );
}
@Override
public void onLoadStarted( @Nullable Drawable placeholder ) {
super.onLoadStarted( placeholder );
+ imageView.setImageResource( imageView.getPlaceHolder() );
if ( listener != null ) {
listener.onStart();
}
- imageView.setImageResource( imageView.getPlaceHolder() );
}
@Override
@@ -159,10 +159,10 @@ public class GlideImageLoader implements IMogoImageloader {
@Override
public void onLoadFailed( @Nullable Drawable errorDrawable ) {
super.onLoadFailed( errorDrawable );
+ imageView.setImageResource( imageView.getFailureHolder() );
if ( listener != null ) {
listener.onFailure( new Exception( "onLoadFailed" ) );
}
- imageView.setImageResource( imageView.getFailureHolder() );
}
} );
}