From 42fca28aae79576fd33ab9d40bf548441c9a6980 Mon Sep 17 00:00:00 2001 From: wangcongtao Date: Tue, 24 Dec 2019 20:07:25 +0800 Subject: [PATCH] add api --- app/src/main/AndroidManifest.xml | 2 + .../demo/module/map/DemoCardViewFragment.java | 51 ++++++++--- .../demo/module/map/DemoCardViewProvider.java | 2 +- .../mogo/demo/module/map/DemoConstants.java | 14 +++ .../module/map/DemoInfoWindowAdapter.java | 48 ++++++++++ .../main/res/layout/demo_module_card_view.xml | 26 +++++- .../layout/demo_module_demo_info_window.xml | 26 ++++++ .../mogo-map/src/main/AndroidManifest.xml | 15 +++- .../src/main/java/com/mogo/map/IMogoMap.java | 6 +- .../mogo/map/amap/AMapUiSettingsWrapper.java | 2 +- .../java/com/mogo/map/amap/AMapWrapper.java | 16 ++-- .../map/amap/location/LocationClient.java | 1 + .../amap/marker/AMapInfoWindowAdapter.java | 35 ++++++++ .../map/amap/marker/AMapMarkerWrapper.java | 30 ++++++- .../map/marker/IMogoInfoWindowAdapter.java | 14 +++ .../java/com/mogo/map/marker/IMogoMarker.java | 11 +++ .../mogo/map/marker/MogoMarkersHandler.java | 89 +++++++++++++++++++ .../com/mogo/service/map/IMogoMapService.java | 20 ++++- .../mogo/service/impl/map/MogoMapService.java | 20 ++++- 19 files changed, 393 insertions(+), 35 deletions(-) create mode 100644 demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java create mode 100644 demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java create mode 100644 demo/demo-module-map/src/main/res/layout/demo_module_demo_info_window.xml create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/amap/marker/AMapInfoWindowAdapter.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/marker/IMogoInfoWindowAdapter.java create mode 100644 libraries/mogo-map/src/main/java/com/mogo/map/marker/MogoMarkersHandler.java diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1c3cce9e33..e55f301423 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,8 @@ + + - * 描述 + * 描述:demo测试各种接口 */ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > > @@ -63,6 +64,7 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > private Bitmap mMarkerIcon; private Bitmap mClickedMarkerIcon; + private TextView mLocInfo; private TextView mLoc; private IMogoMarker mLastClickedMarker; @@ -71,6 +73,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > private IMogoPoiSearch mPoiSearch; private IMogoLocationClient mLocationClient; + private DemoInfoWindowAdapter mDemoInfoWindowAdapter; + @Override protected int getLayoutId() { return R.layout.demo_module_card_view; @@ -84,9 +88,19 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > mPoiSearch.setPoiSearchListener( this ); mLocationClient = mMapService.getSingletonLocationClient( getContext() ); mLocationClient.addLocationListener( this ); - mLocationClient.start( 1_000L ); + mLocInfo = findViewById( R.id.demo_module_id_loc_info ); mLoc = findViewById( R.id.demo_module_id_loc ); + mLoc.setOnClickListener( + new View.OnClickListener() { + @Override + public void onClick( View v ) { + mLocationClient.start( 1_000L ); + } + } + ); + + mDemoInfoWindowAdapter = new DemoInfoWindowAdapter( getContext() ); mMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher ); mClickedMarkerIcon = BitmapFactory.decodeResource( getResources(), R.drawable.ic_launcher_round ); @@ -94,12 +108,12 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > mAddMarker.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - IMogoMapService ims = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation(); MogoMarkerOptions options = new MogoMarkerOptions() .icon( mMarkerIcon ) .latitude( 39.974525d ) .longitude( 116.41733d ); - IMogoMarker marker = ims.addMarker( options ); + IMogoMarker marker = mMapService.addMarker( DemoConstants.TAG, options ); + marker.setInfoWindowAdapter( mDemoInfoWindowAdapter ); marker.setOnMarkerClickListener( DemoCardViewFragment.this ); } } ); @@ -107,22 +121,29 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > mAddMarkers.setOnClickListener( new View.OnClickListener() { @Override public void onClick( View v ) { - IMogoMapService ims = ( IMogoMapService ) ARouter.getInstance().build( MogoServicePaths.PATH_SERVICES_MAP ).navigation(); + ArrayList< MogoMarkerOptions > optionsList = new ArrayList<>(); for ( int i = 0; i < 10; i++ ) { MogoMarkerOptions options = new MogoMarkerOptions() .icon( mMarkerIcon ) .latitude( 39.974525d + new Random().nextDouble() ) .longitude( 116.41733d + new Random().nextDouble() ); - List< IMogoMarker > iMogoMarkers = ims.addMarkers( new ArrayList<>( Arrays.asList( options ) ), true ); - for ( IMogoMarker iMogoMarker : iMogoMarkers ) { - iMogoMarker.setOnMarkerClickListener( DemoCardViewFragment.this ); - } + optionsList.add( options ); + } + List< IMogoMarker > iMogoMarkers = mMapService.addMarkers( DemoConstants.TAG, optionsList, true ); + for ( IMogoMarker iMogoMarker : iMogoMarkers ) { + iMogoMarker.setInfoWindowAdapter( mDemoInfoWindowAdapter ); + iMogoMarker.setOnMarkerClickListener( DemoCardViewFragment.this ); } - } } ); + findViewById( R.id.demo_module_id_clear ).setOnClickListener( new View.OnClickListener() { + @Override + public void onClick( View v ) { + mMapService.removeMarkers( DemoConstants.TAG ); + } + } ); } @Override @@ -138,6 +159,8 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > } marker.setIcon( mClickedMarkerIcon ); mLastClickedMarker = marker; + + marker.showInfoWindow(); return true; } @@ -207,7 +230,15 @@ public class DemoCardViewFragment extends MvpFragment< IView, Presenter< IView > @Override public void onLocationChanged( MogoLocation location ) { + mLocationClient.stop(); Logger.i( TAG, location.toString() ); + if ( mLocInfo != null ) { + if ( location.getErrCode() == 0 ) { + mLocInfo.setText( "当前位置:" + location.getAddress() ); + } else { + mLocInfo.setText( location.getErrInfo() ); + } + } } @Override diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java index a9cc98d857..d99a8103eb 100644 --- a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoCardViewProvider.java @@ -37,7 +37,7 @@ public class DemoCardViewProvider implements IMogoModuleProvider { @Override public String getModuleName() { - return MogoModulePaths.PATH_MODULE_DEMO; + return DemoConstants.TAG; } @Override diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java new file mode 100644 index 0000000000..ab82c11c7f --- /dev/null +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoConstants.java @@ -0,0 +1,14 @@ +package com.mogo.demo.module.map; + +import com.mogo.module.common.MogoModulePaths; + +/** + * @author congtaowang + * @since 2019-12-24 + *

+ * 描述 + */ +public class DemoConstants { + + public static final String TAG = MogoModulePaths.PATH_MODULE_DEMO; +} diff --git a/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java new file mode 100644 index 0000000000..300d735910 --- /dev/null +++ b/demo/demo-module-map/src/main/java/com/mogo/demo/module/map/DemoInfoWindowAdapter.java @@ -0,0 +1,48 @@ +package com.mogo.demo.module.map; + +import android.content.Context; +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 java.text.SimpleDateFormat; +import java.util.Date; + +/** + * @author congtaowang + * @since 2019-12-24 + *

+ * 描述 + */ +public class DemoInfoWindowAdapter implements IMogoInfoWindowAdapter { + + private Context mContext; + + public DemoInfoWindowAdapter( Context mContext ) { + this.mContext = mContext; + } + + @Override + public View getInfoWindow( IMogoMarker marker ) { + View view = LayoutInflater.from( mContext ).inflate( R.layout.demo_module_demo_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(); + } + } ); + } +} + diff --git a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml index e0a6bb02ac..218df1fe68 100644 --- a/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml +++ b/demo/demo-module-map/src/main/res/layout/demo_module_card_view.xml @@ -6,7 +6,7 @@ android:background="#ff0000"> @@ -28,9 +27,28 @@ android:id="@+id/demo_module_id_add_markers" android:layout_width="200dp" android:layout_height="wrap_content" - android:layout_marginTop="75dp" + android:layout_marginTop="50dp" android:text="添加多个覆盖物" - app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintLeft_toLeftOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + +