opt
This commit is contained in:
@@ -287,7 +287,7 @@ public class TanluManager implements IMogoMarkerClickListener,
|
||||
}
|
||||
|
||||
if (voiceData != null) {
|
||||
mTanluModelData.queryRodeInfo(voiceData, new RoadInfoCallback() {
|
||||
mTanluModelData.queryRodeInfo(mContext, mKeywords, voiceData, new RoadInfoCallback() {
|
||||
@Override
|
||||
public void onQueryRoadInfoSuccess(@NotNull List<? extends MarkerExploreWay> roadInfoList) {
|
||||
if (roadInfoList == null || (roadInfoList != null && roadInfoList.size() <= 0)) {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.mogo.module.share.callback
|
||||
|
||||
import com.mogo.module.common.entity.MarkerExploreWay
|
||||
import com.mogo.cloud.tanlu.bean.MarkerExploreWay
|
||||
|
||||
|
||||
interface RoadInfoCallback {
|
||||
fun onLocatSuccess(lat: Double, lon: Double)
|
||||
|
||||
@@ -1,7 +1,12 @@
|
||||
package com.mogo.module.share.net;
|
||||
|
||||
import android.content.Context;
|
||||
|
||||
import com.alibaba.android.arouter.launcher.ARouter;
|
||||
import com.google.gson.Gson;
|
||||
import com.mogo.cloud.network.BaseData;
|
||||
import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback;
|
||||
import com.mogo.cloud.tanlu.api.MogoRoadSearchManager;
|
||||
import com.mogo.commons.debug.DebugConfig;
|
||||
import com.mogo.commons.network.ParamsProvider;
|
||||
import com.mogo.commons.network.SubscribeImpl;
|
||||
@@ -27,6 +32,7 @@ import com.mogo.utils.logger.Logger;
|
||||
import com.mogo.utils.network.RequestOptions;
|
||||
import com.mogo.utils.network.utils.GsonUtil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Map;
|
||||
|
||||
import io.reactivex.Observable;
|
||||
@@ -73,111 +79,148 @@ public class TanluModelData {
|
||||
*
|
||||
* @param voiceCmdData 语音提供的语义封装
|
||||
*/
|
||||
public void queryRodeInfo(final VoiceCmdData voiceCmdData, final RoadInfoCallback callback) {
|
||||
public void queryRodeInfo(Context context, String key, final VoiceCmdData voiceCmdData, final RoadInfoCallback callback) {
|
||||
Logger.d(TAG, "queryRodeInfo: " + voiceCmdData);
|
||||
if (voiceCmdData.isHere()) {
|
||||
// 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
|
||||
MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
|
||||
Location location = new Location(l.getLatitude(), l.getLongitude());
|
||||
callback.onLocatSuccess(l.getLatitude(), l.getLongitude());
|
||||
RoadInfoRequest request;
|
||||
if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
|
||||
// 拥堵和路况同时查
|
||||
request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
|
||||
}else{
|
||||
request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
|
||||
|
||||
ArrayList list = new ArrayList();
|
||||
list.add(voiceCmdData.getType());
|
||||
|
||||
//北京市朝阳区小黄庄北街2号, 经纬度和地理位置必须有一个
|
||||
MogoLocation mogoLocation = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
|
||||
com.mogo.cloud.tanlu.bean.location.Location location = new com.mogo.cloud.tanlu.bean.location.Location();
|
||||
location.setLatitude(mogoLocation.getLatitude());
|
||||
location.setLongitude(mogoLocation.getLongitude());
|
||||
com.mogo.cloud.tanlu.bean.RoadInfoRequest request = new com.mogo.cloud.tanlu.bean.RoadInfoRequest(location, key, list, false, false);
|
||||
|
||||
MogoRoadSearchManager.getInstance(context).init();
|
||||
MogoRoadSearchManager.getInstance(context).queryRoadInfo(request, new IRoadInfoSearchCallback() {
|
||||
@Override
|
||||
public void onSuccess(BaseData<com.mogo.cloud.tanlu.bean.RoadInfos> result) {
|
||||
if (result != null) {
|
||||
if (result.getResult() != null) {
|
||||
Logger.d(TAG, "搜索附近路况信息成功: " + result.getResult());
|
||||
callback.onQueryRoadInfoSuccess(result.getResult().getData());
|
||||
} else {
|
||||
callback.onQueryRoadInfoFail(result.getMsg(), result.getCode());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Map<String, Object> params = new ParamsProvider.Builder(mContext)
|
||||
.append("sn", Utils.getSn())
|
||||
.append("data", GsonUtil.jsonFromObject(request))
|
||||
.build();
|
||||
@Override
|
||||
public void onFailure(int code) {
|
||||
callback.onQueryRoadInfoFail("", code);
|
||||
}
|
||||
|
||||
mShareApiService.queryRoadInfos(params)
|
||||
.subscribeOn(Schedulers.io())
|
||||
.observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
super.onError(e);
|
||||
}
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
|
||||
@Override
|
||||
public void onSuccess(BaseDataCompat<RoadInfos> o) {
|
||||
super.onSuccess(o);
|
||||
Logger.d(TAG, "搜索附近路况信息成功: " + o);
|
||||
callback.onQueryRoadInfoSuccess(o.getResult().getData());
|
||||
Logger.d(TAG, "搜索附近路况信息成功2: " + o);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
@Override
|
||||
public void onError(String message, int code) {
|
||||
super.onError(message, code);
|
||||
callback.onQueryRoadInfoFail(message, code);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端
|
||||
Observable.create(new ObservableOnSubscribe<MogoPoiResult>() {
|
||||
@Override
|
||||
public void subscribe(ObservableEmitter<MogoPoiResult> emitter) throws Exception {
|
||||
// 根据传入的地址,转成经纬度
|
||||
IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi();
|
||||
String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode();
|
||||
MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode);
|
||||
IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery);
|
||||
MogoPoiResult result = poiSearch.searchPOI();
|
||||
if (result != null && result.getPois() != null && result.getPois().size() > 0) {
|
||||
emitter.onNext(result);
|
||||
} else {
|
||||
emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度"));
|
||||
}
|
||||
}
|
||||
}).subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
|
||||
.flatMap(new Function<MogoPoiResult, Observable<BaseDataCompat<RoadInfos>>>() {
|
||||
@Override
|
||||
public Observable<BaseDataCompat<RoadInfos>> apply(MogoPoiResult mogoPoiResult) throws Exception {
|
||||
// 转成经纬度后,整理参数,进行接口请求
|
||||
Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName());
|
||||
MogoPoiItem poiItem = mogoPoiResult.getPois().get(0);
|
||||
Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon);
|
||||
callback.onLocatSuccess(location.getLat(), location.getLon());
|
||||
RoadInfoRequest request;
|
||||
if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
|
||||
// 拥堵和路况同时查
|
||||
request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
|
||||
}else{
|
||||
request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
|
||||
}
|
||||
|
||||
Map<String, Object> params = new ParamsProvider.Builder(mContext)
|
||||
.append("sn", Utils.getSn())
|
||||
.append("data", GsonUtil.jsonFromObject(request))
|
||||
.build();
|
||||
return mShareApiService.queryRoadInfos(params);
|
||||
}
|
||||
}).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
||||
.subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
|
||||
@Override
|
||||
public void onError(Throwable e) {
|
||||
super.onError(e);
|
||||
callback.onQueryRoadInfoFail(e.getMessage(), -1);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSuccess(BaseDataCompat<RoadInfos> o) {
|
||||
super.onSuccess(o);
|
||||
Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o);
|
||||
callback.onQueryRoadInfoSuccess(o.getResult().getData());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onError(String message, int code) {
|
||||
super.onError(message, code);
|
||||
callback.onQueryRoadInfoFail(message, code);
|
||||
}
|
||||
});
|
||||
}
|
||||
// if (voiceCmdData.isHere()) {
|
||||
// // 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
|
||||
// MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
|
||||
// Location location = new Location(l.getLatitude(), l.getLongitude());
|
||||
// callback.onLocatSuccess(l.getLatitude(), l.getLongitude());
|
||||
// RoadInfoRequest request;
|
||||
// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
|
||||
// // 拥堵和路况同时查
|
||||
// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
|
||||
// }else{
|
||||
// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
|
||||
// }
|
||||
//
|
||||
// Map<String, Object> params = new ParamsProvider.Builder(mContext)
|
||||
// .append("sn", Utils.getSn())
|
||||
// .append("data", GsonUtil.jsonFromObject(request))
|
||||
// .build();
|
||||
//
|
||||
// mShareApiService.queryRoadInfos(params)
|
||||
// .subscribeOn(Schedulers.io())
|
||||
// .observeOn(AndroidSchedulers.mainThread())
|
||||
// .subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
|
||||
// @Override
|
||||
// public void onError(Throwable e) {
|
||||
// super.onError(e);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onSuccess(BaseDataCompat<RoadInfos> o) {
|
||||
// super.onSuccess(o);
|
||||
// Logger.d(TAG, "搜索附近路况信息成功: " + o);
|
||||
// callback.onQueryRoadInfoSuccess(o.getResult().getData());
|
||||
// Logger.d(TAG, "搜索附近路况信息成功2: " + o);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(String message, int code) {
|
||||
// super.onError(message, code);
|
||||
// callback.onQueryRoadInfoFail(message, code);
|
||||
// }
|
||||
// });
|
||||
// } else {
|
||||
// // 查询的不是附近的信息,所以需要查询一下目标地址的经纬度,然后再请求服务端
|
||||
// Observable.create(new ObservableOnSubscribe<MogoPoiResult>() {
|
||||
// @Override
|
||||
// public void subscribe(ObservableEmitter<MogoPoiResult> emitter) throws Exception {
|
||||
// // 根据传入的地址,转成经纬度
|
||||
// IMogoMapService mapService = TanluServiceManager.getServiceApis().getMapServiceApi();
|
||||
// String cityCode = mapService.getSingletonLocationClient(mContext).getLastKnowLocation().getCityCode();
|
||||
// MogoPoiSearchQuery poiSearchQuery = new MogoPoiSearchQuery(voiceCmdData.getLocation(), "", cityCode);
|
||||
// IMogoPoiSearch poiSearch = mapService.getPoiSearch(mContext, poiSearchQuery);
|
||||
// MogoPoiResult result = poiSearch.searchPOI();
|
||||
// if (result != null && result.getPois() != null && result.getPois().size() > 0) {
|
||||
// emitter.onNext(result);
|
||||
// } else {
|
||||
// emitter.onError(new IllegalArgumentException("没有根据地址查询到对应的经纬度"));
|
||||
// }
|
||||
// }
|
||||
// }).subscribeOn(Schedulers.io()).observeOn(Schedulers.io())
|
||||
// .flatMap(new Function<MogoPoiResult, Observable<BaseDataCompat<RoadInfos>>>() {
|
||||
// @Override
|
||||
// public Observable<BaseDataCompat<RoadInfos>> apply(MogoPoiResult mogoPoiResult) throws Exception {
|
||||
// // 转成经纬度后,整理参数,进行接口请求
|
||||
// Logger.d(TAG, "查询目标地址经纬度成功===" + Thread.currentThread().getName());
|
||||
// MogoPoiItem poiItem = mogoPoiResult.getPois().get(0);
|
||||
// Location location = new Location(poiItem.getPoint().lat, poiItem.getPoint().lon);
|
||||
// callback.onLocatSuccess(location.getLat(), location.getLon());
|
||||
// RoadInfoRequest request;
|
||||
// if (voiceCmdData.getObj().equals(TYPE_NAME_BLOCK)) {
|
||||
// // 拥堵和路况同时查
|
||||
// request = new RoadInfoRequest(location, new String[]{TANLU_ROAD_CONGESTION_COMPAT, TANLU_ROAD_CURRENT}, false, false);
|
||||
// }else{
|
||||
// request = new RoadInfoRequest(location, new String[]{voiceCmdData.getType()}, false, false);
|
||||
// }
|
||||
//
|
||||
// Map<String, Object> params = new ParamsProvider.Builder(mContext)
|
||||
// .append("sn", Utils.getSn())
|
||||
// .append("data", GsonUtil.jsonFromObject(request))
|
||||
// .build();
|
||||
// return mShareApiService.queryRoadInfos(params);
|
||||
// }
|
||||
// }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread())
|
||||
// .subscribe(new SubscribeImpl<BaseDataCompat<RoadInfos>>(RequestOptions.create(mContext)) {
|
||||
// @Override
|
||||
// public void onError(Throwable e) {
|
||||
// super.onError(e);
|
||||
// callback.onQueryRoadInfoFail(e.getMessage(), -1);
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onSuccess(BaseDataCompat<RoadInfos> o) {
|
||||
// super.onSuccess(o);
|
||||
// Logger.d(TAG, "当前线程为"+Thread.currentThread().getName()+" 搜索目标地址路况信息成功: " + o);
|
||||
// callback.onQueryRoadInfoSuccess(o.getResult().getData());
|
||||
// }
|
||||
//
|
||||
// @Override
|
||||
// public void onError(String message, int code) {
|
||||
// super.onError(message, code);
|
||||
// callback.onQueryRoadInfoFail(message, code);
|
||||
// }
|
||||
// });
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user