iMogoMarkers = TanluServiceHandler.getMarkerManager().addMarkers(TanluConstants.TAG, optionsList, true);
+ for (IMogoMarker iMogoMarker : iMogoMarkers) {
+ iMogoMarker.setInfoWindowAdapter(mDemoInfoWindowAdapter);
+ iMogoMarker.setOnMarkerClickListener(TanluCardViewFragment.this);
+ }
+ }
+ });
+
+ findViewById(R.id.demo_module_id_clear).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMarkerManager().removeMarkers(TanluConstants.TAG);
+ }
+ });
+
+ m2D3D.setOnClickListener(new View.OnClickListener() {
+ private EnumMapUI ui = EnumMapUI.NorthUP_2D;
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().changeMapMode(ui = ui.next());
+ m2D3D.setText(ui.toString());
+ }
+ });
+
+ findViewById(R.id.demo_module_id_current).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().moveToCenter(new MogoLatLng(mLocation.getLatitude(), mLocation.getLongitude()));
+ }
+ });
+
+ findViewById(R.id.demo_module_id_start_navi).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getNavi().startNavi(!mNaviMode.isChecked());
+ }
+ });
+
+ findViewById(R.id.demo_module_id_stop_navi).setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getNavi().stopNavi();
+ }
+ });
+
+ findViewById(R.id.demo_module_id_traffic).setOnClickListener(new View.OnClickListener() {
+
+ private boolean enable = true;
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().setTrafficEnabled(enable = !enable);
+ }
+ });
+
+ findViewById(R.id.demo_module_id_zoom_in).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().changeZoom(true);
+ }
+ });
+
+ findViewById(R.id.demo_module_id_zoom_out).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().changeZoom(false);
+ }
+ });
+
+ findViewById(R.id.demo_module_id_day_light).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().changeMapMode(EnumMapUI.Type_Light);
+ }
+ });
+
+ findViewById(R.id.demo_module_id_day_night).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().changeMapMode(EnumMapUI.Type_Night);
+ }
+ });
+
+ findViewById(R.id.demo_module_id_display_overlay).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().displayOverview();
+ }
+ });
+
+ findViewById(R.id.demo_module_id_reverse_lock).setOnClickListener(new View.OnClickListener() {
+
+ @Override
+ public void onClick(View v) {
+ TanluServiceHandler.getMapUIController().recoverLockMode();
+ }
+ });
+
+ TanluServiceHandler.getLocationClient().addLocationListener(new IMogoLocationListener() {
+ @Override
+ public void onLocationChanged(MogoLocation location) {
+ mLocation = location;
+ Logger.d(TAG, "demo模块定位,定位间隔4s");
+ }
+ });
+ }
+
+ @Override
+ public void onActivityCreated(@Nullable Bundle savedInstanceState) {
+ super.onActivityCreated(savedInstanceState);
+ getViewLifecycleOwner().getLifecycle().addObserver(mPresenter);
+ }
+
+ @Override
+ public boolean onMarkerClicked(IMogoMarker marker) {
+// if ( mLastClickedMarker != null ) {
+// mLastClickedMarker.setIcon( this.mMarkerIcon );
+// }
+// marker.setIcon( mClickedMarkerIcon );
+// mLastClickedMarker = marker;
+
+// marker.showInfoWindow();
+ return true;
+ }
+
+ @NonNull
+ @Override
+ protected Presenter createPresenter() {
+ return new Presenter(this) {
+ };
+ }
+
+ @Override
+ public void onPerform() {
+ Logger.d(TAG, "卡片2有效");
+ }
+
+ @Override
+ public void onDisable() {
+ Logger.d(TAG, "卡片2无效");
+ }
+
+
+ @Override
+ public void onMapLoaded() {
+ Logger.d(TAG, "地图加载事件");
+ }
+
+ @Override
+ public void onTouch(MotionEvent motionEvent) {
+// Logger.d( TAG, "地图触摸事件" );
+ }
+
+ @Override
+ public void onPOIClick(MogoPoi poi) {
+ if (poi != null) {
+ TipToast.shortTip(poi.getName());
+ }
+ TanluServiceHandler.getPoiSearch().searchPOIIdAsyn(poi.getPoiId());
+ }
+
+ @Override
+ public void onPoiSearched(MogoPoiResult result, int errorCode) {
+
+ }
+
+ private IMogoMarker mPoiMarker;
+
+ @Override
+ public void onPoiItemSearched(MogoPoiItem item, int errorCode) {
+ if (item == null) {
+ return;
+ }
+ if (mPoiMarker != null) {
+ mPoiMarker.destroy();
+ }
+ mPoiMarker = TanluServiceHandler.getMarkerManager().addMarker(TanluConstants.TAG, new MogoMarkerOptions()
+ .longitude(item.getPoint().lng)
+ .latitude(item.getPoint().lat)
+ .icon(mMarkerIcon));
+ if (mPoiMarker != null) {
+ mPoiMarker.setInfoWindowAdapter(mDemoInfoWindowAdapter);
+ mPoiMarker.setObject(item);
+ mPoiMarker.showInfoWindow();
+ }
+ }
+
+ @Override
+ public void onLocationChanged(MogoLocation location) {
+ mLocation = location;
+ Logger.i(TAG, "接受到的地图模块定位信息");
+ if (mLocInfo != null) {
+ if (location.getErrCode() == 0) {
+ mLocInfo.setText("当前位置:" + location.getAddress());
+ } else {
+ mLocInfo.setText(location.getErrInfo());
+ }
+ }
+ }
+
+ @Override
+ public void onMapClick(MogoLatLng latLng) {
+
+ }
+
+ @Override
+ public void onLockMap(boolean isLock) {
+
+ }
+
+ @Override
+ public void onMapModeChanged(EnumMapUI ui) {
+ Logger.d(TAG, ui.name());
+ }
+
+ @Override
+ public void onDestroyView() {
+ Logger.w(TAG, "onDestroyView position=" + position);
+ super.onDestroyView();
+ getViewLifecycleOwner().getLifecycle().removeObserver(mPresenter);
+ TanluServiceHandler.getLocationClient().removeLocationListener(this);
+ if (mLastClickedMarker != null) {
+ mLastClickedMarker.destroy();
+ mLastClickedMarker = null;
+ }
+ }
+
+}
diff --git a/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluCardViewProvider.java b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluCardViewProvider.java
new file mode 100644
index 0000000000..90f6ed286a
--- /dev/null
+++ b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluCardViewProvider.java
@@ -0,0 +1,79 @@
+package com.zhidao.tanlu;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.view.View;
+
+import androidx.fragment.app.Fragment;
+
+import com.alibaba.android.arouter.facade.annotation.Route;
+import com.mogo.map.listener.IMogoMapListener;
+import com.mogo.map.location.IMogoLocationListener;
+import com.mogo.map.navi.IMogoNaviListener;
+import com.mogo.service.module.IMogoModuleLifecycle;
+import com.mogo.service.module.IMogoModuleProvider;
+import com.mogo.utils.logger.Logger;
+
+/**
+ * @author congtaowang
+ * @since 2019-12-24
+ *
+ * 描述
+ */
+@Route( path = TanluConstants.TAG )
+public class TanluCardViewProvider implements IMogoModuleProvider {
+
+ private static final String TAG = "TanluCardViewProvider";
+
+ private TanluCardViewFragment fragment;
+
+ @Override
+ public Fragment createFragment( Context context, Bundle data ) {
+ fragment = new TanluCardViewFragment();
+ fragment.setArguments( data );
+ Logger.i( TAG, "createFragment" );
+ return fragment;
+ }
+
+ @Override
+ public void init( Context context ) {
+ TanluServiceHandler.init( context );
+ }
+
+ @Override
+ public String getModuleName() {
+ return TanluConstants.TAG;
+ }
+
+ @Override
+ public IMogoModuleLifecycle getCardLifecycle() {
+ return fragment;
+ }
+
+ @Override
+ public View createView( Context context ) {
+ // don't
+ return null;
+ }
+
+ @Override
+ public IMogoMapListener getMapListener() {
+ return fragment;
+ }
+
+ @Override
+ public int getType() {
+ return IMogoModuleProvider.TYPE_FRAGMENT;
+ }
+
+ @Override
+ public IMogoNaviListener getNaviListener() {
+ return null;
+ }
+
+ @Override
+ public IMogoLocationListener getLocationListener() {
+ return fragment;
+ }
+
+}
diff --git a/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluConstants.java b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluConstants.java
new file mode 100644
index 0000000000..089a565812
--- /dev/null
+++ b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluConstants.java
@@ -0,0 +1,12 @@
+package com.zhidao.tanlu;
+
+/**
+ * @author congtaowang
+ * @since 2019-12-24
+ *
+ * 描述
+ */
+public class TanluConstants {
+
+ public static final String TAG = "/tanlu/ui";
+}
diff --git a/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluInfoWindowAdapter.java b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluInfoWindowAdapter.java
new file mode 100644
index 0000000000..7d4fae8fb5
--- /dev/null
+++ b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluInfoWindowAdapter.java
@@ -0,0 +1,131 @@
+package com.zhidao.tanlu;
+
+import android.content.Context;
+import android.graphics.Bitmap;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.mogo.map.marker.IMogoInfoWindowAdapter;
+import com.mogo.map.marker.IMogoMarker;
+import com.mogo.map.marker.MogoMarkerOptions;
+import com.mogo.map.navi.IMogoNavi;
+import com.mogo.map.navi.MogoNaviConfig;
+import com.mogo.map.search.geo.MogoPoiItem;
+import com.mogo.service.imageloader.IMogoImageLoaderListener;
+import com.mogo.service.imageloader.IMogoImageloader;
+import com.mogo.service.imageloader.MogoImageView;
+import com.mogo.utils.WindowUtils;
+import com.mogo.utils.logger.Logger;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @author congtaowang
+ * @since 2019-12-24
+ *
+ * 描述
+ */
+public class TanluInfoWindowAdapter implements IMogoInfoWindowAdapter {
+
+ private static final String TAG = "DemoInfoWindowAdapter";
+
+ private Context mContext;
+ private IMogoNavi mNavi;
+ private IMogoImageloader mImageloader;
+
+ public TanluInfoWindowAdapter(Context mContext, IMogoNavi mNavi, IMogoImageloader iMogoImageloader ) {
+ this.mContext = mContext;
+ this.mNavi = mNavi;
+ this.mImageloader = iMogoImageloader;
+ }
+
+ @Override
+ public View getInfoWindow( IMogoMarker marker ) {
+ if ( marker.getObject() instanceof MogoPoiItem ) {
+ View view = LayoutInflater.from( mContext ).inflate( R.layout.tanlu_module_poi_info_window, null );
+ renderPoiVew( view, marker, ( ( MogoPoiItem ) marker.getObject() ) );
+ return view;
+ } else {
+ View view = LayoutInflater.from( mContext ).inflate( R.layout.tanlu_module_info_window, null );
+ renderView( view, marker );
+ return view;
+ }
+
+ }
+
+ private void renderView( View view, final IMogoMarker marker ) {
+ final TextView time = view.findViewById( R.id.demo_module_id_iw_time );
+ Button refresh = view.findViewById( R.id.demo_module_id_iw_refresh );
+ time.setText( new SimpleDateFormat( "yyyyMMdd HHMMSS" ).format( new Date() ) );
+ refresh.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+ marker.showInfoWindow();
+ }
+ } );
+ Button navi2 = view.findViewById( R.id.demo_module_id_iw_navito );
+ navi2.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+ if ( mNavi != null ) {
+ mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
+ }
+ }
+ } );
+ Button stopNavi = view.findViewById( R.id.demo_module_id_iw_navi_stop );
+ stopNavi.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+ if ( mNavi != null ) {
+ mNavi.stopNavi();
+ }
+ }
+ } );
+ }
+
+ private void renderPoiVew( View view, final IMogoMarker marker, MogoPoiItem item ) {
+ final TextView time = view.findViewById( R.id.demo_module_id_iw_poi_title );
+ time.setText( item.getTitle() );
+ Button navi2 = view.findViewById( R.id.demo_module_id_iw_poi_navito );
+ navi2.setOnClickListener( new View.OnClickListener() {
+ @Override
+ public void onClick( View v ) {
+ if ( mNavi != null ) {
+ mNavi.naviTo( marker.getPosition(), new MogoNaviConfig() );
+ }
+ marker.hideInfoWindow();
+ marker.remove();
+ }
+ } );
+ }
+
+ public View getMarkerView( final MogoMarkerOptions options ) {
+ final View view = LayoutInflater.from( mContext ).inflate( R.layout.tanlu_module_bubble_marker, null );
+ final MogoImageView icon = view.findViewById( R.id.icon );
+ mImageloader.displayImage( "http://imgnews.gmw.cn/attachement/jpg/site2/20191229/00d86176ed0b1f71f4580f.jpg", icon, WindowUtils.dip2px( mContext, 50 ), WindowUtils.dip2px( mContext, 50 ),
+ new IMogoImageLoaderListener() {
+ @Override
+ public void onStart() {
+
+ }
+
+ @Override
+ public void onCompleted( Bitmap bitmap ) {
+ // 刷新图标
+ Logger.d( TAG, "loaded." );
+ options.icon( view );
+ options.notifyObservers();
+ }
+
+ @Override
+ public void onFailure( Exception e ) {
+
+ }
+ } );
+ return view;
+ }
+}
+
diff --git a/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluServiceHandler.java b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluServiceHandler.java
new file mode 100644
index 0000000000..b47e0f9fba
--- /dev/null
+++ b/demo/tanlu-module/src/main/java/com/zhidao/tanlu/TanluServiceHandler.java
@@ -0,0 +1,70 @@
+package com.zhidao.tanlu;
+
+import android.content.Context;
+
+import com.alibaba.android.arouter.launcher.ARouter;
+import com.mogo.map.location.IMogoLocationClient;
+import com.mogo.map.marker.IMogoMarkerManager;
+import com.mogo.map.navi.IMogoNavi;
+import com.mogo.map.search.poisearch.IMogoPoiSearch;
+import com.mogo.map.search.poisearch.query.MogoPoiSearchQuery;
+import com.mogo.map.uicontroller.IMogoMapUIController;
+import com.mogo.service.MogoServicePaths;
+import com.mogo.service.imageloader.IMogoImageloader;
+import com.mogo.service.map.IMogoMapService;
+
+/**
+ * @author congtaowang
+ * @since 2019-12-30
+ *
+ * 持有服务接口实例
+ */
+public class TanluServiceHandler {
+
+ private static IMogoMapService mMapService;
+ private static IMogoPoiSearch mPoiSearch;
+ private static IMogoLocationClient mLocationClient;
+ private static IMogoMarkerManager mMarkerManager;
+ private static IMogoNavi mNavi;
+ private static IMogoMapUIController mMapUIController;
+ private static IMogoImageloader mImageloader;
+
+ public static void init( Context context ) {
+ mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
+ mMapService = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation( context );
+ mImageloader = ( IMogoImageloader ) ARouter.getInstance().build( MogoServicePaths.PATH_UTILS_IMAGE_LOADER ).navigation( context );
+ mPoiSearch = mMapService.getPoiSearch( context, new MogoPoiSearchQuery() );
+ mLocationClient = mMapService.getLocationClient( context );
+ mMarkerManager = mMapService.getMarkerManager( context );
+ mNavi = mMapService.getNavi( context );
+ mMapUIController = mMapService.getMapUIController();
+ }
+
+ public static IMogoMapService getMapService() {
+ return mMapService;
+ }
+
+ public static IMogoPoiSearch getPoiSearch() {
+ return mPoiSearch;
+ }
+
+ public static IMogoLocationClient getLocationClient() {
+ return mLocationClient;
+ }
+
+ public static IMogoMarkerManager getMarkerManager() {
+ return mMarkerManager;
+ }
+
+ public static IMogoNavi getNavi() {
+ return mNavi;
+ }
+
+ public static IMogoMapUIController getMapUIController() {
+ return mMapUIController;
+ }
+
+ public static IMogoImageloader getImageloader() {
+ return mImageloader;
+ }
+}
diff --git a/demo/tanlu-module/src/main/res/layout/tanlu_module_bubble_marker.xml b/demo/tanlu-module/src/main/res/layout/tanlu_module_bubble_marker.xml
new file mode 100644
index 0000000000..a062cf73d1
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/layout/tanlu_module_bubble_marker.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/tanlu-module/src/main/res/layout/tanlu_module_card_view.xml b/demo/tanlu-module/src/main/res/layout/tanlu_module_card_view.xml
new file mode 100644
index 0000000000..34723f1bc6
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/layout/tanlu_module_card_view.xml
@@ -0,0 +1,157 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/demo/tanlu-module/src/main/res/layout/tanlu_module_info_window.xml b/demo/tanlu-module/src/main/res/layout/tanlu_module_info_window.xml
new file mode 100644
index 0000000000..e173483602
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/layout/tanlu_module_info_window.xml
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/tanlu-module/src/main/res/layout/tanlu_module_poi_info_window.xml b/demo/tanlu-module/src/main/res/layout/tanlu_module_poi_info_window.xml
new file mode 100644
index 0000000000..c8fe367ddd
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/layout/tanlu_module_poi_info_window.xml
@@ -0,0 +1,27 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo/tanlu-module/src/main/res/values/colors.xml b/demo/tanlu-module/src/main/res/values/colors.xml
new file mode 100644
index 0000000000..8d694b8a81
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/values/colors.xml
@@ -0,0 +1,18 @@
+
+
+ #000000
+ #000000
+ #1F7FFF
+ #FFFFFF
+ #80FFFFFF
+ #1E212C
+ #1F7FFF
+ #171F7FFF
+ #4d191C25
+ #99191C25
+ #222533
+ #4B5369
+ #9A9A9A
+ #A2A2A2
+
+
diff --git a/demo/tanlu-module/src/main/res/values/strings.xml b/demo/tanlu-module/src/main/res/values/strings.xml
new file mode 100644
index 0000000000..8e55be4fea
--- /dev/null
+++ b/demo/tanlu-module/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+
+ tanlu
+
diff --git a/demo/tanlu-module/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java b/demo/tanlu-module/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java
new file mode 100644
index 0000000000..c1e9a4fcc5
--- /dev/null
+++ b/demo/tanlu-module/src/test/java/com/zhidao/tanlu/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.zhidao.tanlu;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see Testing documentation
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+}
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index a327dda72f..2ea1e5adb7 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -26,6 +26,7 @@ RELEASE=false
# 模块版本
DEMO_MODULE_MAP_VERSION=1.0.0-SNAPSHOT
DEMO_MODULE_MAP2_VERSION=1.0.0-SNAPSHOT
+MOGO_MODULE_TANLU_VERSION=1.0.0-SNAPSHOT
MOGO_COMMONS_VERSION=1.0.0-SNAPSHOT
MOGO_UTILS_VERSION=1.0.0-SNAPSHOT
MAP_AMAP_VERSION=1.0.0-SNAPSHOT
diff --git a/modules/mogo-module-navi/build.gradle b/modules/mogo-module-navi/build.gradle
index 71c043611c..0037ae00f9 100644
--- a/modules/mogo-module-navi/build.gradle
+++ b/modules/mogo-module-navi/build.gradle
@@ -12,6 +12,13 @@ android {
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles 'consumer-rules.pro'
+
+ javaCompileOptions {
+ annotationProcessorOptions {
+ arguments = [AROUTER_MODULE_NAME: project.getName()]
+ }
+ }
+
}
buildTypes {
@@ -36,7 +43,8 @@ dependencies {
implementation rootProject.ext.dependencies.androidxconstraintlayout
implementation rootProject.ext.dependencies.arouter
implementation rootProject.ext.dependencies.room
- implementation rootProject.ext.dependencies.roomAnnotationProcessor
+ annotationProcessor rootProject.ext.dependencies.roomAnnotationProcessor
implementation rootProject.ext.dependencies.roomRxjava
annotationProcessor rootProject.ext.dependencies.aroutercompiler
+ implementation 'org.jetbrains:annotations-java5:15.0'
}
diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java
index 911a337086..6db187784e 100644
--- a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java
+++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/AppDataBase.java
@@ -12,7 +12,7 @@ import com.mogo.module.navi.database.dao.POIDao;
* 2019-08-15.
*/
-@Database(entities = { POIInfo.class}, version = 1)
+@Database(entities = { POIInfo.class}, version = 1, exportSchema = false)
public abstract class AppDataBase extends RoomDatabase {
public abstract POIDao poiDao();
diff --git a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java
index 21e963e2f2..877ad195ae 100644
--- a/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java
+++ b/modules/mogo-module-navi/src/main/java/com/mogo/module/navi/database/bean/POIInfo.java
@@ -2,6 +2,7 @@ package com.mogo.module.navi.database.bean;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
+
import org.jetbrains.annotations.NotNull;
/**
diff --git a/settings.gradle b/settings.gradle
index 188e4c3d70..4bf5f256dd 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -11,6 +11,7 @@ include ':modules:mogo-module-main'
include ':modules:mogo-module-navi'
include ':demo:demo-module-map'
include ':demo:demo-module-map2'
+include ':demo:tanlu-module'
include ':libraries:map-amap'
//include ':libraries:map-baidu'
include ':libraries:mogo-map-api'
diff --git a/upload.sh b/upload.sh
index 6a98b2cf17..d8b5a424f6 100755
--- a/upload.sh
+++ b/upload.sh
@@ -12,4 +12,5 @@
./gradlew :demo:demo-module-map:clean :demo:demo-module-map:uploadArchives
./gradlew :demo:demo-module-map2:clean :demo:demo-module-map2:uploadArchives
./gradlew :modules:mogo-module-apps:clean :modules:mogo-module-apps:uploadArchives
-./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives
\ No newline at end of file
+./gradlew :modules:mogo-module-main:clean :modules:mogo-module-main:uploadArchives
+./gradlew :demo:tanlu-module:clean :demo:tanlu-module:uploadArchives
\ No newline at end of file