地图打点图片样式服务端可配

This commit is contained in:
tongchenfei
2020-10-23 09:50:38 +08:00
parent c90ba8a421
commit e86dfdb867
10 changed files with 67 additions and 28 deletions

1
.idea/gradle.xml generated
View File

@@ -79,7 +79,6 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="useQualifiedModuleNames" value="true" />
</GradleProjectSettings>
</option>
</component>

View File

@@ -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(){

View File

@@ -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(),

View File

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

View File

@@ -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,

View File

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

View File

@@ -15,12 +15,11 @@
android:background="@drawable/module_services_marker_bkg"
android:layout_height="@dimen/module_service_marker_bubble_height">
<ImageView
<com.mogo.service.imageloader.MogoImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/module_service_marker_bubble_icon_width"
android:layout_height="@dimen/module_service_marker_bubble_icon_height"
android:layout_gravity="center"
android:background="#fff"
android:layout_marginBottom="@dimen/module_service_marker_bubble_icon_marginBottom"
tools:src="@drawable/icon_map_marker_road_block_up2" />

View File

@@ -30,12 +30,11 @@
app:miv_placeHolder="@drawable/icon_default_user_head"
app:miv_shape="circle" />
<ImageView
<com.mogo.service.imageloader.MogoImageView
android:id="@+id/ivIcon"
android:layout_width="@dimen/module_service_marker_bubble_icon_width"
android:layout_height="@dimen/module_service_marker_bubble_icon_height"
android:layout_gravity="center"
android:background="#000"
android:layout_marginLeft="@dimen/dp_15"
android:visibility="invisible"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -477,8 +477,8 @@ public class ShareControl implements IMogoShareManager, Handler.Callback {
Logger.d(TAG, "获取分享框成功但是detailMsg没有内容");
}
Logger.d(TAG, "获取分享框配置成功: " + config);
// SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config);
// MapMarkerManager.getInstance().updateIconWithPoiType();
SharedPrefsMgr.getInstance(mContext).putString(KEY_SHARE_CONFIG, config);
MapMarkerManager.getInstance().updateIconWithPoiType();
}
@Override

View File

@@ -134,20 +134,20 @@ public class GlideImageLoader implements IMogoImageloader {
.into( new SimpleTarget< Bitmap >() {
@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() );
}
} );
}