This commit is contained in:
wangcongtao
2020-03-16 14:13:30 +08:00
parent f7eadb8792
commit 7afc046be2
19 changed files with 540 additions and 52 deletions

View File

@@ -16,12 +16,10 @@ import android.view.animation.Interpolator;
import com.amap.api.maps.AMap;
import com.amap.api.maps.AMapUtils;
import com.amap.api.maps.CameraUpdateFactory;
import com.amap.api.maps.CustomRenderer;
import com.amap.api.maps.model.BitmapDescriptorFactory;
import com.amap.api.maps.model.CameraPosition;
import com.amap.api.maps.model.LatLng;
import com.amap.api.maps.model.LatLngBounds;
import com.amap.api.maps.model.LatLngBoundsCreator;
import com.amap.api.maps.model.Marker;
import com.amap.api.maps.model.MyLocationStyle;
import com.amap.api.maps.model.Poi;
@@ -37,7 +35,6 @@ import com.amap.api.navi.model.NaviInfo;
import com.mogo.map.IMogoMap;
import com.mogo.map.IMogoMapView;
import com.mogo.map.MogoLatLng;
import com.mogo.map.exception.MogoMapException;
import com.mogo.map.impl.amap.hook.BnHooker;
import com.mogo.map.impl.amap.marker.AMapMarkerWrapper;
import com.mogo.map.impl.amap.message.AMapMessageListener;
@@ -54,11 +51,6 @@ import com.mogo.utils.logger.Logger;
import java.util.List;
import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;
import retrofit2.http.HEAD;
/**
* @author congtaowang
* @since 2019-12-18
@@ -76,7 +68,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
AMapNaviViewListener,
AMapMessageListener,
AMap.OnCameraChangeListener,
AMap.OnMyLocationChangeListener{
AMap.OnMyLocationChangeListener {
private static final String TAG = "AMapNaviViewWrapper";
@@ -84,6 +76,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
private IMogoMap mIMap;
private AMapMarkerClickHandler mMarkerClickHandler;
private EnumMapUI mCurrentUIMode;
public AMapNaviViewWrapper( AMapNaviView mapView ) {
this.mMapView = mapView;
@@ -158,7 +151,7 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
mMapView.setRouteOverlayVisible( false );
mMapView.setCarOverlayVisible( false );
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
setUIMode(EnumMapUI.CarUp_2D, null);
}
}
@@ -406,16 +399,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
switch ( ui ) {
case CarUp_2D:
options.setTilt( 0 );
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
break;
case CarUp_3D:
options.setTilt( 60 );
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
break;
case NorthUP_2D:
options.setTilt( 0 );
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
setUIMode( ui, options );
break;
case Type_Light:
options.setNaviNight( false );
@@ -432,6 +418,33 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
}
private void setUIMode( EnumMapUI ui, AMapNaviViewOptions options ) {
this.mCurrentUIMode = ui;
switch ( ui ) {
case CarUp_2D:
case CarUp_3D:
mMapView.setNaviMode( AMapNaviView.CAR_UP_MODE );
// TODO: 2020-03-16 车头朝上,需要固定车标
break;
case NorthUP_2D:
mMapView.setNaviMode( AMapNaviView.NORTH_UP_MODE );
// TODO: 2020-03-16 北朝上,需要动态改变车头车标
break;
}
if ( options == null ) {
return;
}
switch ( ui ) {
case CarUp_2D:
case NorthUP_2D:
options.setTilt( 0 );
break;
case CarUp_3D:
options.setTilt( 60 );
break;
}
}
private boolean checkAMapView() {
if ( mMapView == null ) {
@@ -466,6 +479,20 @@ public class AMapNaviViewWrapper implements IMogoMapView,
}
}
private View mCursorView;
@Override
public void showMyLocation( float degree ) {
if ( checkAMapView() ) {
mCursorView = View.inflate( getContext(), R.layout.map_amap_cursor, null );
mCursorView.setRotation( degree );
MyLocationStyle style = mMapView.getMap().getMyLocationStyle();
style.showMyLocation( true );
style.myLocationIcon( BitmapDescriptorFactory.fromView( mCursorView ) );
mMapView.getMap().setMyLocationStyle( style );
}
}
public void initMyLocation() {
if ( checkAMapView() ) {
mMapView.getMap().setMyLocationEnabled( true );
@@ -709,4 +736,9 @@ public class AMapNaviViewWrapper implements IMogoMapView,
public void onMyLocationChange( Location location ) {
NaviClient.getInstance( getContext() ).syncCarLocation( location );
}
@Override
public EnumMapUI getCurrentUiMode() {
return mCurrentUIMode;
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.map.impl.amap.uicontroller;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.View;
import android.view.animation.Interpolator;
import com.mogo.map.MogoLatLng;
@@ -91,6 +92,13 @@ public class AMapUIController implements IMogoMapUIController {
}
}
@Override
public void showMyLocation( float degree ) {
if ( mClient != null ) {
mClient.showMyLocation( degree );
}
}
@Override
public void recoverLockMode() {
if (mClient != null) {
@@ -217,4 +225,12 @@ public class AMapUIController implements IMogoMapUIController {
}
return 0;
}
@Override
public EnumMapUI getCurrentUiMode() {
if ( mClient != null ) {
return mClient.getCurrentUiMode();
}
return null;
}
}

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/map_amap_id_cursor"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_1" />
</LinearLayout>