This commit is contained in:
lixiaopeng
2021-01-22 10:22:13 +08:00
parent 95ec7945a9
commit cc54a55f9c
3 changed files with 169 additions and 4 deletions

View File

@@ -5,19 +5,30 @@ import android.util.Log;
import com.google.gson.Gson;
import com.mogo.cloud.commons.network.RetrofitFactory;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.cloud.tanlu.api.IRoadInfoSearchCallback;
import com.mogo.cloud.tanlu.api.ITanluUploadCallback;
import com.mogo.cloud.tanlu.bean.InformationBody;
import com.mogo.cloud.tanlu.bean.RoadInfoRequest;
import com.mogo.cloud.tanlu.bean.RoadInfos;
import com.mogo.cloud.tanlu.bean.UploadResult;
import com.mogo.cloud.tanlu.bean.location.Location;
import com.mogo.cloud.tanlu.bean.location.MogoLocation;
import com.mogo.cloud.tanlu.net.TanluApiService;
import com.mogo.cloud.passport.MoGoAiCloudClient;
import com.mogo.utils.logger.Logger;
import com.mogo.utils.network.RequestOptions;
import com.mogo.utils.network.utils.GsonUtil;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Function;
import io.reactivex.schedulers.Schedulers;
/**
@@ -94,8 +105,153 @@ public class UploadManager {
}
/**
* 通过经纬度信息查询 TanluModelData
* @param roadInfoRequest
* @param callback
*/
public void queryRoadInfoByLocationInfo(RoadInfoRequest roadInfoRequest, IRoadInfoSearchCallback callback) {
Map<String, Object> map = new HashMap<>();
map.put("sn", "F803EB2046PZD00228");
map.put("data", GsonUtil.jsonFromObject(roadInfoRequest));
apiService.queryRoadInfos(map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<RoadInfos>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.d(TAG, "queryRoadInfos onSubscribe ----");
}
@Override
public void onNext(@NonNull RoadInfos roadInfos) {
Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData());
callback.onSuccess(roadInfos);
}
@Override
public void onError(@NonNull Throwable e) {
Log.d(TAG, "queryRoadInfos onError ----");
callback.onError(e);
}
@Override
public void onComplete() {
Log.d(TAG, "queryRoadInfos onComplete ----");
}
});
}
// public void queryRoadInfoByCity(InformationBody informationBody, ITanluUploadCallback callback) {
//
// if (voiceCmdData.isHere()) { //TanluModelData
// // 搜索附近路况,只需要拿到当前位置信息,就可以请求服务端
// MogoLocation l = TanluServiceManager.getServiceApis().getMapServiceApi().getSingletonLocationClient(mContext).getLastKnowLocation();
// Location location = new Location(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> map = new HashMap<>();
// map.put("sn", "F803EB2046PZD00228");
// map.put("data", "GsonUtil.jsonFromObject(request)");
//
// apiService.queryRoadInfos(map)
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(new Observer<RoadInfos>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
// Log.d(TAG, "queryRoadInfos onSubscribe ----");
// }
//
// @Override
// public void onNext(@NonNull RoadInfos roadInfos) {
// Log.d(TAG, "queryRoadInfos onNext roadInfos----" + roadInfos.getData());
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
// Log.d(TAG, "queryRoadInfos onError ----");
// }
//
// @Override
// public void onComplete() {
// Log.d(TAG, "queryRoadInfos onComplete ----");
// }
// });
// } 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);
// }
// });
// }
// }
}

View File

@@ -55,4 +55,13 @@ public class RoadInfoRequest {
this.onlySameCity = onlySameCity;
}
@Override
public String toString() {
return "RoadInfoRequest{" +
"location=" + location +
", poiTypes=" + poiTypes +
", onlyFocus=" + onlyFocus +
", onlySameCity=" + onlySameCity +
'}';
}
}

View File

@@ -7,7 +7,7 @@ import java.util.List;
* @description
* @since 2021/1/20
*/
public class RoadInfos {
public class RoadInfos{
private List<MarkerExploreWay> data;