This commit is contained in:
wangcongtao
2020-03-09 11:48:39 +08:00
parent 640b519fd5
commit eaa12ba5d2
39 changed files with 1239 additions and 423 deletions

View File

@@ -12,21 +12,42 @@ import android.os.Parcelable;
public class MogoLatLng implements Parcelable {
public final double lat;
@Deprecated
public final double lng;
public final double lon;
public MogoLatLng( double lat, double lng ) {
public MogoLatLng( double lat, double lon ) {
this.lat = lat;
this.lng = lng;
this.lng = lon;
this.lon = lng;
}
public double getLat() {
return lat;
}
/**
* Deprecated, use {@link #getLon()} instead.
*
* @return
*/
@Deprecated
public double getLng() {
return lng;
}
public double getLon() {
return lon;
}
@Override
public String toString() {
return "MogoLatLng{" +
"lat=" + lat +
", lon=" + lon +
'}';
}
@Override
public int describeContents() {
return 0;
@@ -36,14 +57,16 @@ public class MogoLatLng implements Parcelable {
public void writeToParcel( Parcel dest, int flags ) {
dest.writeDouble( this.lat );
dest.writeDouble( this.lng );
dest.writeDouble( this.lon );
}
protected MogoLatLng( Parcel in ) {
this.lat = in.readDouble();
this.lng = in.readDouble();
this.lon = in.readDouble();
}
public static final Parcelable.Creator< MogoLatLng > CREATOR = new Parcelable.Creator< MogoLatLng >() {
public static final Creator< MogoLatLng > CREATOR = new Creator< MogoLatLng >() {
@Override
public MogoLatLng createFromParcel( Parcel source ) {
return new MogoLatLng( source );
@@ -54,12 +77,4 @@ public class MogoLatLng implements Parcelable {
return new MogoLatLng[size];
}
};
@Override
public String toString() {
return "MogoLatLng{" +
"lat=" + lat +
", lng=" + lng +
'}';
}
}

View File

@@ -2,6 +2,7 @@ package com.mogo.map.listener;
import com.mogo.map.marker.IMogoMarkerClickListener;
import com.mogo.map.marker.MogoMarkersHandler;
import com.mogo.map.navi.IMogoAimlessModeListener;
import com.mogo.map.navi.IMogoNaviListener;
import com.mogo.map.navi.MogoNaviListenerHandler;
@@ -63,4 +64,14 @@ public class MogoHosListenerRegister implements IMogoHosListenerRegister {
public void unregisterMarkerClickListener() {
MogoMarkersHandler.getInstance().unregisterMarkerClickListener();
}
@Override
public void registerHostAimlessModeListener( IMogoAimlessModeListener listener ) {
MogoNaviListenerHandler.getInstance().registerHostAimlessModeListener( listener );
}
@Override
public void unregisterHostAimlessModeListener() {
MogoNaviListenerHandler.getInstance().unregisterHostAimlessModeListener();
}
}

View File

@@ -0,0 +1,22 @@
package com.mogo.map.navi;
/**
* @author congtaowang
* @since 2020-03-09
* <p>
* 续航模式回调
*/
public interface IMogoAimlessModeListener {
/**
* 巡航信息发生改变
*/
void onUpdateTraffic2( MogoTraffic traffic );
/**
* 拥堵信息
*
* @param info
*/
void onUpdateCongestion( MogoCongestionInfo info );
}

View File

@@ -47,6 +47,8 @@ public interface IMogoNaviListener {
/**
* 巡航信息发生改变
* Deprecated, use {@link IMogoAimlessModeListener#onUpdateTraffic2(MogoTraffic)} instead.
*/
void onUpdateTraffic(MogoTraffic traffic);
@Deprecated
void onUpdateTraffic( MogoTraffic traffic );
}

View File

@@ -15,8 +15,20 @@ public interface IMogoNaviListenerRegister {
*/
void registerHostNaviListener( IMogoNaviListener listener );
/**
* 注册巡航模式回调,各业务模块不用关注
*
* @param listener
*/
void registerHostAimlessModeListener( IMogoAimlessModeListener listener );
/**
* 注销导航回调,各业务模块不用关注
*/
void unregisterHostNaviListener();
/**
* 注销巡航回调,各业务模块不用关注
*/
void unregisterHostAimlessModeListener();
}

View File

@@ -0,0 +1,133 @@
package com.mogo.map.navi;
import android.os.Parcel;
import android.os.Parcelable;
import java.util.List;
/**
* @author congtaowang
* @since 2020-03-09
* <p>
* 拥堵详情
*/
public class MogoCongestionInfo implements Parcelable {
private int mTime;
private int mLength;
private String mRoadName;
private int mCongestionStatus;
private int mEventType;
private double mEventLon;
private double mEventLat;
private List< MogoCongestionLink > mCongestionLinks;
public MogoCongestionInfo() {
}
public int getTime() {
return mTime;
}
public void setTime( int mTime ) {
this.mTime = mTime;
}
public int getLength() {
return mLength;
}
public void setLength( int mLength ) {
this.mLength = mLength;
}
public String getRoadName() {
return mRoadName;
}
public void setRoadName( String mRoadName ) {
this.mRoadName = mRoadName;
}
public int getCongestionStatus() {
return mCongestionStatus;
}
public void setCongestionStatus( int mCongestionStatus ) {
this.mCongestionStatus = mCongestionStatus;
}
public int getEventType() {
return mEventType;
}
public void setEventType( int mEventType ) {
this.mEventType = mEventType;
}
public double getEventLon() {
return mEventLon;
}
public void setEventLon( double mEventLon ) {
this.mEventLon = mEventLon;
}
public double getEventLat() {
return mEventLat;
}
public void setEventLat( double mEventLat ) {
this.mEventLat = mEventLat;
}
public List< MogoCongestionLink > getCongestionLinks() {
return mCongestionLinks;
}
public void setCongestionLinks( List< MogoCongestionLink > mCongestionLinks ) {
this.mCongestionLinks = mCongestionLinks;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel( Parcel dest, int flags ) {
dest.writeInt( this.mTime );
dest.writeInt( this.mLength );
dest.writeString( this.mRoadName );
dest.writeInt( this.mCongestionStatus );
dest.writeInt( this.mEventType );
dest.writeDouble( this.mEventLon );
dest.writeDouble( this.mEventLat );
dest.writeTypedList( this.mCongestionLinks );
}
protected MogoCongestionInfo( Parcel in ) {
this.mTime = in.readInt();
this.mLength = in.readInt();
this.mRoadName = in.readString();
this.mCongestionStatus = in.readInt();
this.mEventType = in.readInt();
this.mEventLon = in.readDouble();
this.mEventLat = in.readDouble();
this.mCongestionLinks = in.createTypedArrayList( MogoCongestionLink.CREATOR );
}
public static final Creator< MogoCongestionInfo > CREATOR = new Creator< MogoCongestionInfo >() {
@Override
public MogoCongestionInfo createFromParcel( Parcel source ) {
return new MogoCongestionInfo( source );
}
@Override
public MogoCongestionInfo[] newArray( int size ) {
return new MogoCongestionInfo[size];
}
};
}

View File

@@ -0,0 +1,69 @@
package com.mogo.map.navi;
import android.os.Parcel;
import android.os.Parcelable;
import com.mogo.map.MogoLatLng;
import java.util.ArrayList;
import java.util.List;
/**
* @author congtaowang
* @since 2020-03-09
* <p>
* 描述
*/
public class MogoCongestionLink implements Parcelable {
private ArrayList< MogoLatLng > mCoords;
private int mCongestionStatus;
public MogoCongestionLink() {
}
public List< MogoLatLng > getCoords() {
return mCoords;
}
public void setCoords( ArrayList< MogoLatLng > mCoords ) {
this.mCoords = mCoords;
}
public int getCongestionStatus() {
return mCongestionStatus;
}
public void setCongestionStatus( int mCongestionStatus ) {
this.mCongestionStatus = mCongestionStatus;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel( Parcel dest, int flags ) {
dest.writeTypedList( this.mCoords );
dest.writeInt( this.mCongestionStatus );
}
protected MogoCongestionLink( Parcel in ) {
this.mCoords = in.createTypedArrayList( MogoLatLng.CREATOR );
this.mCongestionStatus = in.readInt();
}
public static final Creator< MogoCongestionLink > CREATOR = new Creator< MogoCongestionLink >() {
@Override
public MogoCongestionLink createFromParcel( Parcel source ) {
return new MogoCongestionLink( source );
}
@Override
public MogoCongestionLink[] newArray( int size ) {
return new MogoCongestionLink[size];
}
};
}

View File

@@ -6,7 +6,7 @@ package com.mogo.map.navi;
* <p>
* 地图监听注册管理
*/
public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviListenerRegister {
public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviListenerRegister, IMogoAimlessModeListener {
private static volatile MogoNaviListenerHandler sInstance;
@@ -33,6 +33,11 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList
*/
private IMogoNaviListener mDelegateListener = null;
/**
* 上层模块代理对象
*/
private IMogoAimlessModeListener mAimlessDelegateListener = null;
@Override
public void registerHostNaviListener( IMogoNaviListener listener ) {
mDelegateListener = listener;
@@ -43,6 +48,16 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList
mDelegateListener = null;
}
@Override
public void registerHostAimlessModeListener( IMogoAimlessModeListener listener ) {
mAimlessDelegateListener = listener;
}
@Override
public void unregisterHostAimlessModeListener() {
mAimlessDelegateListener = null;
}
@Override
public synchronized void onInitNaviFailure() {
if ( mDelegateListener != null ) {
@@ -93,9 +108,24 @@ public class MogoNaviListenerHandler implements IMogoNaviListener, IMogoNaviList
}
@Override
@Deprecated
public void onUpdateTraffic( MogoTraffic traffic ) {
if ( mDelegateListener != null ) {
mDelegateListener.onUpdateTraffic( traffic );
}
}
@Override
public void onUpdateTraffic2( MogoTraffic traffic ) {
if ( mAimlessDelegateListener != null ) {
mAimlessDelegateListener.onUpdateTraffic2( traffic );
}
}
@Override
public void onUpdateCongestion( MogoCongestionInfo info ) {
if ( mAimlessDelegateListener != null ) {
mAimlessDelegateListener.onUpdateCongestion( info );
}
}
}

View File

@@ -1,5 +1,7 @@
package com.mogo.map.navi;
import com.mogo.map.MogoLatLng;
/**
* @author congtaowang
* @since 2020-01-16
@@ -34,9 +36,65 @@ public class MogoTraffic {
private int mSpeedLimit;
/**
* 描述
* 经度
*/
private String mDesc;
private double mLon;
/**
* 维度
*/
private double mLat;
/**
* 交通类型
* 0 未知道路设施
* 4 测速摄像头、测速雷达
* 5 违章摄像头
* 10 请谨慎驾驶
* 11 有连续拍照
* 12 铁路道口
* 13 注意落石(左侧)
* 14 事故易发地段
* 15 易滑
* 16 村庄
* 18 前方学校
* 19 有人看管的铁路道口
* 20 无人看管的铁路道口
* 21 两侧变窄
* 22 向左急弯路
* 23 向右急弯路
* 24 反向弯路
* 25 连续弯路
* 26 左侧合流标识牌
* 27 右侧合流标识牌
* 28 监控摄像头
* 29 专用道摄像头
* 31 禁止超车
* 36 右侧变窄
* 37 左侧变窄
* 38 窄桥
* 39 左右绕行
* 40 左侧绕行
* 41 右侧绕行
* 42 注意落石(右侧)
* 43 傍山险路(左侧)
* 44 傍山险路(右侧)
* 47 上陡坡
* 48 下陡坡
* 49 过水路面
* 50 路面不平
* 52 慢行
* 53 注意危险
* 58 隧道
* 59 渡口
* 92 闯红灯
* 93 应急车道
* 94 非机动车道
* 100 不绑定电子眼高发地
* 101 车道违章
* 102 超速违章
*/
private int mTrafficType;
public MogoTraffic( int fromType ) {
mFromType = fromType;
@@ -67,10 +125,124 @@ public class MogoTraffic {
}
public String getDesc() {
return mDesc;
switch ( getTrafficType() ) {
case 0:
default:
return "未知道路设施";
case 4:
return "测速摄像头、测速雷达";
case 5:
return "违章摄像头";
case 10:
return "请谨慎驾驶";
case 11:
return "有连续拍照";
case 12:
return "铁路道口";
case 13:
return "注意落石(左侧)";
case 14:
return "事故易发地段";
case 15:
return "易滑";
case 16:
return "村庄";
case 18:
return "前方学校";
case 19:
return "有人看管的铁路道口";
case 20:
return "无人看管的铁路道口";
case 21:
return "两侧变窄";
case 22:
return "向左急弯路";
case 23:
return "向右急弯路";
case 24:
return "反向弯路";
case 25:
return "连续弯路";
case 26:
return "左侧合流标识牌";
case 27:
return "右侧合流标识牌";
case 28:
return "监控摄像头";
case 29:
return "专用道摄像头";
case 31:
return "禁止超车";
case 36:
return "右侧变窄";
case 37:
return "左侧变窄";
case 38:
return "窄桥";
case 39:
return "左右绕行";
case 40:
return "左侧绕行";
case 41:
return "右侧绕行";
case 42:
return "注意落石(右侧)";
case 43:
return "傍山险路(左侧)";
case 44:
return "傍山险路(右侧)";
case 47:
return "上陡坡";
case 48:
return "下陡坡";
case 49:
return "过水路面";
case 50:
return "路面不平";
case 52:
return "慢行";
case 53:
return "注意危险";
case 58:
return "隧道";
case 59:
return "渡口";
case 92:
return "闯红灯";
case 93:
return "应急车道";
case 94:
return "非机动车道";
case 100:
return "不绑定电子眼高发地";
case 101:
return "车道违章";
case 102:
return "超速违章";
}
}
public void setDesc( String desc ) {
this.mDesc = desc;
public double getLon() {
return mLon;
}
public void setLon( double lon ) {
this.mLon = lon;
}
public double getLat() {
return mLat;
}
public void setLat( double lat ) {
this.mLat = lat;
}
public int getTrafficType() {
return mTrafficType;
}
public void setTrafficType( int trafficType ) {
this.mTrafficType = trafficType;
}
}