diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java index 69497f597a..3556667786 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XMarkerService.java @@ -5,7 +5,9 @@ import android.os.Handler; import com.mogo.map.MogoLatLng; import com.mogo.map.location.MogoLocation; +import com.mogo.module.common.entity.MarkerResponse; import com.mogo.module.v2x.listener.V2XLocationListener; +import com.mogo.module.v2x.network.V2XRefreshCallback; import com.mogo.module.v2x.network.V2XRefreshModel; import com.mogo.utils.logger.Logger; @@ -18,7 +20,7 @@ import static com.mogo.module.v2x.V2XConst.MODULE_NAME; * desc : * version: 1.0 */ -public class V2XMarkerService { +public class V2XMarkerService implements V2XRefreshCallback { private final String TAG = "V2XMarkerService"; // 一分钟获取一次最新的路况信息 @@ -48,12 +50,13 @@ public class V2XMarkerService { public void refreshMarkerData(MogoLocation location) { try { if (mV2XRefreshModel != null && location != null) { - //Logger.d(MODULE_NAME, "V2X道路事件:执行气泡刷新操作。"); + Logger.d(MODULE_NAME, "V2X道路事件:执行气泡刷新操作。"); // 获取目前最新的周边的poi点 - mV2XRefreshModel.querySnapshotAsync( + mV2XRefreshModel.querySnapshotSync( new MogoLatLng(location.getLatitude(), location.getLongitude()), (int) getMapCameraFactWidth(), - 999); + 999, + this); } } catch (Exception e) { e.printStackTrace(); @@ -105,4 +108,16 @@ public class V2XMarkerService { } refreshHandler.post(refreshRunnable); } + + @Override + public void onSuccess(MarkerResponse result) { + if (V2XSocketManager.getInstance().getV2XMessageListener_401011() != null) { + V2XSocketManager.getInstance().getV2XMessageListener_401011().onMsgReceived(result); + } + } + + @Override + public void onFail(String msg) { + Logger.e(TAG, "刷新V2X道路事件异常请检查参数"); + } } diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java index 1d29df1df1..36c68f8619 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/V2XSocketManager.java @@ -120,6 +120,10 @@ public class V2XSocketManager { ); } + public V2XMessageListener_401011 getV2XMessageListener_401011() { + return v2XMessageListener_401011; + } + /** * 道路事件,服务端下发 */ diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java index 2345952ffa..8efd454b4c 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XApiService.java @@ -39,12 +39,19 @@ public interface V2XApiService { Observable refreshHeartBeat(@FieldMap Map liveBroadcast); /** - * 刷新地图气泡点 + * 刷新地图气泡点,异步获取 */ @FormUrlEncoded @POST("/yycp-launcherSnapshot/launcherSnapshot/querySnapshotAsync") Observable querySnapshotAsync(@FieldMap Map parameters); + /** + * 刷新地图气泡点,同步获取 + */ + @FormUrlEncoded + @POST("/yycp-launcherSnapshot/launcherSnapshot/querySnapshotSync") + Observable querySnapshotSync(@FieldMap Map parameters); + /** * 直播点赞 */ diff --git a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java index 947cdffe39..f5de5e4ca9 100644 --- a/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java +++ b/modules/mogo-module-v2x/src/main/java/com/mogo/module/v2x/network/V2XRefreshModel.java @@ -67,7 +67,7 @@ public class V2XRefreshModel { } /** - * 刷新地图点数据 + * 刷新地图点数据,同步获取 */ public void querySnapshotAsync(MogoLatLng latLng, int radius, int limit) { if (mV2XApiService != null) { @@ -96,6 +96,42 @@ public class V2XRefreshModel { } } + /** + * 刷新地图点数据,同步获取 + */ + public void querySnapshotSync(MogoLatLng latLng, int radius, int limit, final V2XRefreshCallback callback) { + if (mV2XApiService != null) { + final Map query = new ParamsProvider.Builder(mContext).build(); + final RefreshBody refreshBody = new RefreshBody(); + refreshBody.limit = limit; + refreshBody.location = new RefreshBody.LatLon(latLng.lat, latLng.lon); + refreshBody.radius = radius; + refreshBody.dataType.add(ServiceConst.CARD_TYPE_ROAD_CONDITION); + refreshBody.viewPush = true; + query.put("data", GsonUtil.jsonFromObject(refreshBody)); + mV2XApiService.querySnapshotSync(query) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new SubscribeImpl(RequestOptions.create(mContext)) { + @Override + public void onSuccess(MarkerResponse o) { + super.onSuccess(o); + if (callback != null) { + callback.onSuccess(o); + } + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + if (callback != null) { + callback.onFail(message); + } + } + }); + } + } + /** * 触发刷新直播心跳 *