This commit is contained in:
wangcongtao
2020-04-13 19:07:05 +08:00
parent 9f4c8a704f
commit dccc9be8be
44 changed files with 1151 additions and 448 deletions

View File

@@ -82,8 +82,6 @@ public class AMapNaviViewWrapper implements IMogoMapView,
private AMapMarkerClickHandler mMarkerClickHandler;
private EnumMapUI mCurrentUIMode;
// 自定义定位源的回调信息,前瞻线
private LocationSource.OnLocationChangedListener mOnLocationChangedListener;
private boolean mIsCarLocked = false;
private float mDefaultZoomLevel = 16.0f;
@@ -212,7 +210,6 @@ public class AMapNaviViewWrapper implements IMogoMapView,
initMapView();
initListeners();
initMyLocation();
// initLocationSource();
}
}
@@ -554,21 +551,8 @@ public class AMapNaviViewWrapper implements IMogoMapView,
style.strokeWidth( 0 );
style.radiusFillColor( Color.TRANSPARENT );
mMapView.getMap().setMyLocationStyle( style );
}
}
private void initLocationSource() {
if ( checkAMapView() ) {
mMapView.getMap().setLocationSource( new LocationSource() {
@Override
public void activate( OnLocationChangedListener onLocationChangedListener ) {
AMapNaviViewWrapper.this.mOnLocationChangedListener = onLocationChangedListener;
}
@Override
public void deactivate() {
}
mMapView.getMap().setOnMyLocationChangeListener( location -> {
Logger.d( TAG, "%s", location );
} );
}
}
@@ -835,9 +819,6 @@ public class AMapNaviViewWrapper implements IMogoMapView,
@Override
public void changeMyLocation( Location location ) {
if ( mOnLocationChangedListener != null ) {
mOnLocationChangedListener.onLocationChanged( location );
}
}
@Override

View File

@@ -4,12 +4,14 @@ import android.content.Context;
import android.graphics.Rect;
import android.location.Location;
import com.amap.api.maps.LocationSource;
import com.amap.api.maps.model.Polyline;
import com.amap.api.navi.AMapNavi;
import com.amap.api.navi.enums.AimLessMode;
import com.amap.api.navi.enums.NaviType;
import com.amap.api.navi.model.NaviLatLng;
import com.mogo.map.MogoLatLng;
import com.mogo.map.impl.amap.AMapWrapper;
import com.mogo.map.impl.amap.message.AMapMessageManager;
import com.mogo.map.impl.amap.utils.ObjectUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
@@ -51,6 +53,7 @@ public class NaviClient implements IMogoNavi {
private Location mCarLocation;
private IMogoCarLocationChangedListener mCarLocationChangedListener;
private LocationSource.OnLocationChangedListener mOnLocationChangedListener;
private NaviClient( Context context ) {
mAMapNavi = AMapNavi.getInstance( context );
@@ -289,4 +292,45 @@ public class NaviClient implements IMogoNavi {
mAMapNaviListener.displayOverview();
}
}
@Override
public void setUseExtraGPSData( boolean use ) {
Logger.d( TAG, "设置外部gps源状态 %s", use );
mAMapNavi.setIsUseExtraGPSData( use );
if ( use ) {
AMapWrapper.getAMap().setLocationSource( new LocationSource() {
@Override
public void activate( OnLocationChangedListener onLocationChangedListener ) {
NaviClient.this.mOnLocationChangedListener = onLocationChangedListener;
}
@Override
public void deactivate() {
}
} );
} else {
AMapWrapper.getAMap().setLocationSource( null );
mOnLocationChangedListener = null;
}
}
@Override
public void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp ) {
if ( !mAMapNavi.getIsUseExtraGPSData() ) {
Logger.d( TAG, "拒绝外部GPS数据" );
return;
}
Location location = new Location( "外部GPS源" );
location.setLongitude( lon );
location.setLatitude( lat );
location.setSpeed( speed );
location.setAccuracy( accuracy );
location.setBearing( bearing );
location.setTime( timestamp );
//type字段传1时代表WGS84坐标
mAMapNavi.setExtraGPSData( 2, location );
if ( mOnLocationChangedListener != null ) {
mOnLocationChangedListener.onLocationChanged( location );
}
}
}

View File

@@ -1,8 +1,10 @@
package com.mogo.map.navi;
import android.graphics.Rect;
import android.location.Location;
import com.mogo.map.MogoLatLng;
import com.mogo.map.location.MogoLocation;
import java.util.List;
@@ -163,4 +165,16 @@ public interface IMogoNavi {
* 查看全程
*/
void displayOverview();
/**
* 设置使用外部定位源
*
* @param use true - 使用false - 不适用
*/
void setUseExtraGPSData( boolean use );
/**
* 设置外部数据源
*/
void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp );
}

View File

@@ -2,6 +2,7 @@ package com.mogo.map;
import android.content.Context;
import android.graphics.Rect;
import android.location.Location;
import com.mogo.map.impl.amap.navi.NaviClient;
import com.mogo.map.navi.IMogoCarLocationChangedListener;
@@ -201,4 +202,18 @@ public class MogoNavi implements IMogoNavi {
mDelegate.displayOverview();
}
}
@Override
public void setUseExtraGPSData( boolean use ) {
if ( mDelegate != null ) {
mDelegate.setUseExtraGPSData( use );
}
}
@Override
public void setExtraGPSData( double lon, double lat, float speed, float accuracy, float bearing, long timestamp ) {
if ( mDelegate != null ) {
mDelegate.setExtraGPSData( lon, lat, speed, accuracy, bearing, timestamp );
}
}
}