[Fix]解决车模闪动问题

原因:切换线程后源数据被修改
This commit is contained in:
chenfufeng
2022-08-08 19:49:38 +08:00
parent d555ed0c8b
commit 0f017814c3
2 changed files with 22 additions and 21 deletions

View File

@@ -17,7 +17,7 @@ import androidx.annotation.Nullable;
import com.amap.api.maps.AMap;
import com.amap.api.maps.CameraUpdate;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.TextureMapView;
import com.amap.api.maps.MapView;
import com.amap.api.maps.UiSettings;
import com.amap.api.maps.model.BitmapDescriptor;
import com.amap.api.maps.model.BitmapDescriptorFactory;
@@ -65,7 +65,7 @@ public class AMapCustomView
extends RelativeLayout
implements IMoGoMapLocationListener {
public static final String TAG = "AMapCustomView";
private TextureMapView mAMapView;
private MapView mAMapView;
private AMap mAMap;
private int zoomLevel = 15;
private CameraUpdate mCameraUpdate;
@@ -94,6 +94,7 @@ public class AMapCustomView
private MogoLocation mLocation;
private boolean isFirstLocation = true;
CustomMapStyleOptions mCustomMapStyleOptions;
public AMapCustomView(Context context) {
this(context, null);
@@ -140,20 +141,22 @@ public class AMapCustomView
Log.d(TAG, "initAMapView");
mCameraUpdate = CameraUpdateFactory.zoomTo(zoomLevel);
mAMap = mAMapView.getMap();
mCustomMapStyleOptions = new CustomMapStyleOptions();
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
mCustomMapStyleOptions.setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style.data"));
mCustomMapStyleOptions.setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra.data"));
} else {
mCustomMapStyleOptions.setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style_bus.data"));
mCustomMapStyleOptions.setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra_bus.data"));
}
mAMap.setOnMapLoadedListener(() -> {
Log.d(TAG, "---onMapLoaded---");
CustomMapStyleOptions customMapStyleOptions = new CustomMapStyleOptions();
// 加载自定义样式
customMapStyleOptions.setEnable(true);
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode)) {
customMapStyleOptions.setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style.data"));
customMapStyleOptions.setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra.data"));
} else {
customMapStyleOptions.setStyleData(MapAssetStyleUtils.getAssetsStyle(getContext(), "over_view_style_bus.data"));
customMapStyleOptions.setStyleExtraData(MapAssetStyleUtils.getAssetsExtraStyle(getContext(), "over_view_style_extra_bus.data"));
if (mCustomMapStyleOptions != null) {
// 加载自定义样式
mCustomMapStyleOptions.setEnable(true);
// 设置自定义样式
mAMap.setCustomMapStyle(mCustomMapStyleOptions);
}
// 设置自定义样式
mAMap.setCustomMapStyle(customMapStyleOptions);
// 实时路况图层关闭必须添加在loaded结束之后,其他位置不生效
mAMap.setTrafficEnabled(false);
});
@@ -269,13 +272,11 @@ public class AMapCustomView
public void onLocationChanged(@org.jetbrains.annotations.Nullable MogoLocation location, int from) {
mLocation = location;
MarkerDrawerManager.INSTANCE.setLonLat(new Pair(location.getLongitude(), location.getLatitude()));
UiThreadHandler.post(() -> {
drawCarMarker(location);
if (isFirstLocation) {
displayCustomOverView();
isFirstLocation = false;
}
});
drawCarMarker(location);
if (isFirstLocation) {
displayCustomOverView();
isFirstLocation = false;
}
}
public void onCreateView(Bundle savedInstanceState) {

View File

@@ -17,7 +17,7 @@
android:layout_height="match_parent"
android:layout_centerInParent="true">
<com.amap.api.maps.TextureMapView
<com.amap.api.maps.MapView
android:id="@+id/aMapView"
android:layout_width="match_parent"
android:layout_height="match_parent" />