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() ); } } ); }