地图打点图片样式服务端可配
This commit is contained in:
@@ -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(),
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user