From cd017f876bbfc833c08e15278261981d375495a2 Mon Sep 17 00:00:00 2001 From: Kuloud Date: Sat, 23 Dec 2023 11:31:14 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 51 ++---------- android/build.gradle | 8 +- android/src/main/AndroidManifest.xml | 4 +- .../flutter/map/AMapFlutterMapPlugin.java | 11 +-- .../amap/flutter/map/AMapOptionsBuilder.java | 4 +- .../amap/flutter/map/AMapPlatformView.java | 6 +- .../flutter/map/AMapPlatformViewFactory.java | 5 +- .../amap/flutter/map/MyMethodCallHandler.java | 7 +- .../flutter/map/ProxyLifecycleProvider.java | 3 +- .../flutter/map/core/AMapOptionsSink.java | 1 - .../amap/flutter/map/core/MapController.java | 77 +++++++------------ .../overlays/AbstractOverlayController.java | 8 +- .../map/overlays/marker/MarkerController.java | 12 +-- .../map/overlays/marker/MarkerUtil.java | 5 +- .../overlays/marker/MarkersController.java | 2 - .../overlays/polygon/PolygonController.java | 6 +- .../polygon/PolygonOptionsBuilder.java | 6 +- .../map/overlays/polygon/PolygonUtil.java | 1 - .../overlays/polygon/PolygonsController.java | 3 +- .../overlays/polyline/PolylineController.java | 4 +- .../polyline/PolylineOptionsBuilder.java | 3 +- .../map/overlays/polyline/PolylineUtil.java | 6 +- .../polyline/PolylinesController.java | 3 - .../amap/flutter/map/utils/ConvertUtil.java | 15 ++-- .../com/amap/flutter/map/utils/LogUtil.java | 18 +++-- example/android/app/build.gradle | 4 +- .../android/app/src/debug/AndroidManifest.xml | 2 +- .../android/app/src/main/AndroidManifest.xml | 39 +++++----- .../amap_map_example/MainActivity.java | 2 +- .../main/res/drawable/launch_background.xml | 3 +- .../app/src/profile/AndroidManifest.xml | 2 +- example/android/build.gradle | 2 +- 32 files changed, 118 insertions(+), 205 deletions(-) diff --git a/README.md b/README.md index edc9077..86e6bd3 100644 --- a/README.md +++ b/README.md @@ -8,11 +8,7 @@ ## 准备工作 * 登录[高德开放平台官网](https://lbs.amap.com/)申请ApiKey。Android平台申请配置key请参考[Android获取key](https://lbs.amap.com/api/poi-sdk-android/develop/create-project/get-key/?sug_index=2), iOS平台申请配置请参考[iOS获取key](https://lbs.amap.com/api/poi-sdk-ios/develop/create-project/get-key/?sug_index=1)。 * 引入高德地图SDK,Android平台请参考[Android Sudio配置工程](https://lbs.amap.com/api/android-sdk/guide/create-project/android-studio-create-project), iOS平台请参考[ios安装地图SDK](https://lbs.amap.com/api/ios-sdk/guide/create-project/cocoapods) -* iOS端插件使用特殊配置:Flutter 1.22.0 之前(之后的版本可以不添加该配置),iOS端的UiKitView还只是preview状态, 默认是不支持的, 需要手动打开开关, 需要在iOS工程的info.plist添加如下配置: -``` XML -io.flutter.embedded_views_preview -YES -``` + ## 使用示例 ``` Dart @@ -20,7 +16,7 @@ import 'package:amap_map_example/base_page.dart'; import 'package:flutter/material.dart'; import 'package:amap_map/amap_map.dart'; -import 'package:amap_map/amap_map.dart'; +import 'package:x_amap_base/x_amap_base.dart'; class ShowMapPage extends BasePage { ShowMapPage(String title, String subTitle) : super(title, subTitle); @@ -40,7 +36,6 @@ class _ShowMapPageState extends State<_ShowMapPageBody> { target: LatLng(39.909187, 116.397451), zoom: 10.0, ); - List _approvalNumberWidget = List(); @override Widget build(BuildContext context) { final AMapWidget map = AMapWidget( @@ -50,24 +45,10 @@ class _ShowMapPageState extends State<_ShowMapPageBody> { return ConstrainedBox( constraints: BoxConstraints.expand(), - child: Stack( - alignment: Alignment.center, - children: [ - Container( - height: MediaQuery.of(context).size.height, - width: MediaQuery.of(context).size.width, - child: map, - ), - Positioned( - right: 10, - bottom: 15, - child: Container( - alignment: Alignment.centerLeft, - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: _approvalNumberWidget), - )) - ], + child: Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + child: map, ), ); } @@ -76,29 +57,9 @@ class _ShowMapPageState extends State<_ShowMapPageBody> { void onMapCreated(AMapController controller) { setState(() { _mapController = controller; - getApprovalNumber(); }); } - /// 获取审图号 - void getApprovalNumber() async { - //普通地图审图号 - String mapContentApprovalNumber = - await _mapController?.getMapContentApprovalNumber(); - //卫星地图审图号 - String satelliteImageApprovalNumber = - await _mapController?.getSatelliteImageApprovalNumber(); - setState(() { - if (null != mapContentApprovalNumber) { - _approvalNumberWidget.add(Text(mapContentApprovalNumber)); - } - if (null != satelliteImageApprovalNumber) { - _approvalNumberWidget.add(Text(satelliteImageApprovalNumber)); - } - }); - print('地图审图号(普通地图): $mapContentApprovalNumber'); - print('地图审图号(卫星地图): $satelliteImageApprovalNumber'); - } } ``` diff --git a/android/build.gradle b/android/build.gradle index abc470c..0686994 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,21 +1,21 @@ -group 'com.amap.flutter.amap_map' +group 'com.amap.flutter.map' version '1.0' buildscript { repositories { google() - jcenter() + mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:3.5.3' } } rootProject.allprojects { repositories { google() - jcenter() + mavenCentral() } } diff --git a/android/src/main/AndroidManifest.xml b/android/src/main/AndroidManifest.xml index 6a4b0a4..4fb7c70 100644 --- a/android/src/main/AndroidManifest.xml +++ b/android/src/main/AndroidManifest.xml @@ -1,3 +1 @@ - - + diff --git a/android/src/main/java/com/amap/flutter/map/AMapFlutterMapPlugin.java b/android/src/main/java/com/amap/flutter/map/AMapFlutterMapPlugin.java index 96bdb09..e0972c7 100644 --- a/android/src/main/java/com/amap/flutter/map/AMapFlutterMapPlugin.java +++ b/android/src/main/java/com/amap/flutter/map/AMapFlutterMapPlugin.java @@ -9,7 +9,6 @@ import androidx.lifecycle.LifecycleOwner; import com.amap.flutter.map.utils.LogUtil; - import io.flutter.embedding.engine.plugins.FlutterPlugin; import io.flutter.embedding.engine.plugins.activity.ActivityAware; import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding; @@ -23,10 +22,11 @@ public class AMapFlutterMapPlugin implements FlutterPlugin, ActivityAware { private static final String CLASS_NAME = "AMapFlutterMapPlugin"; - private FlutterPluginBinding pluginBinding; + private static final String VIEW_TYPE = "com.amap.flutter.map"; private Lifecycle lifecycle; - private static final String VIEW_TYPE = "com.amap.flutter.map"; + public AMapFlutterMapPlugin() { + } public static void registerWith(PluginRegistry.Registrar registrar) { LogUtil.i(CLASS_NAME, "registerWith=====>"); @@ -58,15 +58,11 @@ public class AMapFlutterMapPlugin implements } } - public AMapFlutterMapPlugin() { - } - // FlutterPlugin @Override public void onAttachedToEngine(@NonNull FlutterPluginBinding binding) { LogUtil.i(CLASS_NAME, "onAttachedToEngine==>"); - pluginBinding = binding; binding .getPlatformViewRegistry() .registerViewFactory( @@ -85,7 +81,6 @@ public class AMapFlutterMapPlugin implements @Override public void onDetachedFromEngine(@NonNull FlutterPluginBinding binding) { LogUtil.i(CLASS_NAME, "onDetachedFromEngine==>"); - pluginBinding = null; } diff --git a/android/src/main/java/com/amap/flutter/map/AMapOptionsBuilder.java b/android/src/main/java/com/amap/flutter/map/AMapOptionsBuilder.java index e7c7f86..5ce0b93 100644 --- a/android/src/main/java/com/amap/flutter/map/AMapOptionsBuilder.java +++ b/android/src/main/java/com/amap/flutter/map/AMapOptionsBuilder.java @@ -2,7 +2,6 @@ package com.amap.flutter.map; import android.content.Context; - import com.amap.api.maps.AMapOptions; import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.CustomMapStyleOptions; @@ -11,7 +10,6 @@ import com.amap.api.maps.model.MyLocationStyle; import com.amap.flutter.map.core.AMapOptionsSink; import com.amap.flutter.map.utils.LogUtil; - import java.util.List; import io.flutter.plugin.common.BinaryMessenger; @@ -67,7 +65,7 @@ class AMapOptionsBuilder implements AMapOptionsSink { && anchorY <= 1.0 && anchorY >= 0) { - aMapPlatformView.getMapController().setScreenAnchor( anchorX, anchorY); + aMapPlatformView.getMapController().setScreenAnchor(anchorX, anchorY); } aMapPlatformView.getMapController().setMinZoomLevel(minZoomLevel); diff --git a/android/src/main/java/com/amap/flutter/map/AMapPlatformView.java b/android/src/main/java/com/amap/flutter/map/AMapPlatformView.java index 7f63680..546910e 100644 --- a/android/src/main/java/com/amap/flutter/map/AMapPlatformView.java +++ b/android/src/main/java/com/amap/flutter/map/AMapPlatformView.java @@ -42,18 +42,14 @@ public class AMapPlatformView PlatformView { private static final String CLASS_NAME = "AMapPlatformView"; private final MethodChannel methodChannel; - + private final Map myMethodCallHandlerMap; private MapController mapController; private MarkersController markersController; private PolylinesController polylinesController; private PolygonsController polygonsController; - private TextureMapView mapView; - private boolean disposed = false; - private final Map myMethodCallHandlerMap; - AMapPlatformView(int id, Context context, BinaryMessenger binaryMessenger, diff --git a/android/src/main/java/com/amap/flutter/map/AMapPlatformViewFactory.java b/android/src/main/java/com/amap/flutter/map/AMapPlatformViewFactory.java index 8b50410..b7a5f33 100644 --- a/android/src/main/java/com/amap/flutter/map/AMapPlatformViewFactory.java +++ b/android/src/main/java/com/amap/flutter/map/AMapPlatformViewFactory.java @@ -23,6 +23,7 @@ class AMapPlatformViewFactory extends PlatformViewFactory { private static final String CLASS_NAME = "AMapPlatformViewFactory"; private final BinaryMessenger binaryMessenger; private final LifecycleProvider lifecycleProvider; + AMapPlatformViewFactory(BinaryMessenger binaryMessenger, LifecycleProvider lifecycleProvider) { super(StandardMessageCodec.INSTANCE); @@ -37,13 +38,13 @@ class AMapPlatformViewFactory extends PlatformViewFactory { try { ConvertUtil.density = context.getResources().getDisplayMetrics().density; params = (Map) args; - LogUtil.i(CLASS_NAME,"create params==>" + params); + LogUtil.i(CLASS_NAME, "create params==>" + params); if (params.containsKey("privacyStatement")) { ConvertUtil.setPrivacyStatement(context, params.get("privacyStatement")); } Object options = ((Map) args).get("options"); - if(null != options) { + if (null != options) { ConvertUtil.interpretAMapOptions(options, builder); } diff --git a/android/src/main/java/com/amap/flutter/map/MyMethodCallHandler.java b/android/src/main/java/com/amap/flutter/map/MyMethodCallHandler.java index 76d0920..3886d13 100644 --- a/android/src/main/java/com/amap/flutter/map/MyMethodCallHandler.java +++ b/android/src/main/java/com/amap/flutter/map/MyMethodCallHandler.java @@ -2,7 +2,6 @@ package com.amap.flutter.map; import androidx.annotation.NonNull; - import io.flutter.plugin.common.MethodCall; import io.flutter.plugin.common.MethodChannel; @@ -14,10 +13,12 @@ import io.flutter.plugin.common.MethodChannel; */ public interface MyMethodCallHandler { - public void doMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + void doMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result); + /** * 获取注册的{@link io.flutter.plugin.common.MethodCall#method} + * * @return */ - public abstract String[] getRegisterMethodIdArray(); + String[] getRegisterMethodIdArray(); } diff --git a/android/src/main/java/com/amap/flutter/map/ProxyLifecycleProvider.java b/android/src/main/java/com/amap/flutter/map/ProxyLifecycleProvider.java index 4f6aec5..c2f411b 100644 --- a/android/src/main/java/com/amap/flutter/map/ProxyLifecycleProvider.java +++ b/android/src/main/java/com/amap/flutter/map/ProxyLifecycleProvider.java @@ -20,8 +20,7 @@ import com.amap.flutter.map.utils.LogUtil; public class ProxyLifecycleProvider implements Application.ActivityLifecycleCallbacks, - LifecycleOwner, - LifecycleProvider { + LifecycleOwner { private static final String CLASS_NAME = "ProxyLifecycleProvider"; private final LifecycleRegistry lifecycle = new LifecycleRegistry(this); private final int registrarActivityHashCode; diff --git a/android/src/main/java/com/amap/flutter/map/core/AMapOptionsSink.java b/android/src/main/java/com/amap/flutter/map/core/AMapOptionsSink.java index 79fd00c..45fca32 100644 --- a/android/src/main/java/com/amap/flutter/map/core/AMapOptionsSink.java +++ b/android/src/main/java/com/amap/flutter/map/core/AMapOptionsSink.java @@ -4,7 +4,6 @@ import com.amap.api.maps.model.CameraPosition; import com.amap.api.maps.model.CustomMapStyleOptions; import com.amap.api.maps.model.LatLngBounds; import com.amap.api.maps.model.MyLocationStyle; -import com.amap.api.maps.model.MyTrafficStyle; /** * @author whm diff --git a/android/src/main/java/com/amap/flutter/map/core/MapController.java b/android/src/main/java/com/amap/flutter/map/core/MapController.java index 52b1b96..63de932 100644 --- a/android/src/main/java/com/amap/flutter/map/core/MapController.java +++ b/android/src/main/java/com/amap/flutter/map/core/MapController.java @@ -3,7 +3,6 @@ package com.amap.flutter.map.core; import android.graphics.Bitmap; import android.location.Location; - import androidx.annotation.NonNull; import com.amap.api.maps.AMap; @@ -43,16 +42,15 @@ public class MapController AMap.OnMapClickListener, AMap.OnMapLongClickListener, AMap.OnPOIClickListener { + private static final String CLASS_NAME = "MapController"; private static boolean hasStarted = false; private final MethodChannel methodChannel; private final AMap amap; private final TextureMapView mapView; - private MethodChannel.Result mapReadyResult; protected int[] myArray = {}; - - private static final String CLASS_NAME = "MapController"; - + private MethodChannel.Result mapReadyResult; private boolean mapLoaded = false; + private boolean myLocationShowing = false; public MapController(MethodChannel methodChannel, TextureMapView mapView) { this.methodChannel = methodChannel; @@ -72,7 +70,6 @@ public class MapController return Const.METHOD_ID_LIST_FOR_MAP; } - @Override public void doMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { LogUtil.i(CLASS_NAME, "doMethodCall===>" + call.method); @@ -89,61 +86,47 @@ public class MapController mapReadyResult = result; break; case Const.METHOD_MAP_SATELLITE_IMAGE_APPROVAL_NUMBER: - if (null != amap) { - result.success(amap.getSatelliteImageApprovalNumber()); - } + result.success(amap.getSatelliteImageApprovalNumber()); break; case Const.METHOD_MAP_CONTENT_APPROVAL_NUMBER: - if (null != amap) { - result.success(amap.getMapContentApprovalNumber()); - } + result.success(amap.getMapContentApprovalNumber()); break; case Const.METHOD_MAP_UPDATE: - if (amap != null) { - ConvertUtil.interpretAMapOptions(call.argument("options"), this); - result.success(ConvertUtil.cameraPositionToMap(getCameraPosition())); - } + ConvertUtil.interpretAMapOptions(call.argument("options"), this); + result.success(ConvertUtil.cameraPositionToMap(getCameraPosition())); break; case Const.METHOD_MAP_MOVE_CAMERA: - if (null != amap) { - final CameraUpdate cameraUpdate = ConvertUtil.toCameraUpdate(call.argument("cameraUpdate")); - final Object animatedObject = call.argument("animated"); - final Object durationObject = call.argument("duration"); + final CameraUpdate cameraUpdate = ConvertUtil.toCameraUpdate(call.argument("cameraUpdate")); + final Object animatedObject = call.argument("animated"); + final Object durationObject = call.argument("duration"); - moveCamera(cameraUpdate, animatedObject, durationObject); - } + moveCamera(cameraUpdate, animatedObject, durationObject); break; case Const.METHOD_MAP_SET_RENDER_FPS: - if (null != amap) { - amap.setRenderFps((Integer) call.argument("fps")); - result.success(null); - } + amap.setRenderFps((Integer) call.argument("fps")); + result.success(null); break; case Const.METHOD_MAP_TAKE_SNAPSHOT: - if (amap != null) { - final MethodChannel.Result _result = result; - amap.getMapScreenShot(new AMap.OnMapScreenShotListener() { - @Override - public void onMapScreenShot(Bitmap bitmap) { - ByteArrayOutputStream stream = new ByteArrayOutputStream(); - bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); - byte[] byteArray = stream.toByteArray(); - bitmap.recycle(); - _result.success(byteArray); - } + final MethodChannel.Result _result = result; + amap.getMapScreenShot(new AMap.OnMapScreenShotListener() { + @Override + public void onMapScreenShot(Bitmap bitmap) { + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream); + byte[] byteArray = stream.toByteArray(); + bitmap.recycle(); + _result.success(byteArray); + } - @Override - public void onMapScreenShot(Bitmap bitmap, int i) { + @Override + public void onMapScreenShot(Bitmap bitmap, int i) { - } - }); - } + } + }); break; case Const.METHOD_MAP_CLEAR_DISK: - if (null != amap) { - amap.removecache(); - result.success(null); - } + amap.removecache(); + result.success(null); break; default: LogUtil.w(CLASS_NAME, "onMethodCall not find methodId:" + call.method); @@ -187,8 +170,6 @@ public class MapController } } - private boolean myLocationShowing = false; - @Override public void setMyLocationStyle(MyLocationStyle myLocationStyle) { if (null != amap) { diff --git a/android/src/main/java/com/amap/flutter/map/overlays/AbstractOverlayController.java b/android/src/main/java/com/amap/flutter/map/overlays/AbstractOverlayController.java index 5a42914..0baeef9 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/AbstractOverlayController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/AbstractOverlayController.java @@ -1,13 +1,8 @@ package com.amap.flutter.map.overlays; -import androidx.annotation.NonNull; - import com.amap.api.maps.AMap; -import com.amap.api.maps.TextureMapView; -import java.util.ArrayList; import java.util.HashMap; -import java.util.List; import java.util.Map; import io.flutter.plugin.common.MethodChannel; @@ -23,7 +18,8 @@ public abstract class AbstractOverlayController { protected final Map idMapByOverlyId; protected final MethodChannel methodChannel; protected final AMap amap; - public AbstractOverlayController(MethodChannel methodChannel, AMap amap){ + + public AbstractOverlayController(MethodChannel methodChannel, AMap amap) { this.methodChannel = methodChannel; this.amap = amap; controllerMapByDartId = new HashMap(12); diff --git a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerController.java b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerController.java index ba0068a..48a86d2 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerController.java @@ -30,12 +30,17 @@ class MarkerController implements MarkerOptionsSink { } public LatLng getPosition() { - if(null != marker) { + if (null != marker) { return marker.getPosition(); } return null; } + @Override + public void setPosition(LatLng position) { + marker.setPosition(position); + } + @Override public void setAlpha(float alpha) { marker.setAlpha(alpha); @@ -71,11 +76,6 @@ class MarkerController implements MarkerOptionsSink { marker.setSnippet(snippet); } - @Override - public void setPosition(LatLng position) { - marker.setPosition(position); - } - @Override public void setRotation(float rotation) { marker.setRotateAngle(rotation); diff --git a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerUtil.java b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerUtil.java index bce6996..e398be4 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerUtil.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkerUtil.java @@ -2,7 +2,6 @@ package com.amap.flutter.map.overlays.marker; import android.text.TextUtils; -import com.amap.flutter.map.overlays.marker.MarkerOptionsSink; import com.amap.flutter.map.utils.ConvertUtil; import java.util.List; @@ -53,7 +52,7 @@ public class MarkerUtil { } final Object rotation = data.get("rotation"); if (rotation != null) { - sink.setRotation(Math.abs(360- ConvertUtil.toFloat(rotation))); + sink.setRotation(Math.abs(360 - ConvertUtil.toFloat(rotation))); } final Object visible = data.get("visible"); if (visible != null) { @@ -66,7 +65,7 @@ public class MarkerUtil { final Object infoWindowEnable = data.get("infoWindowEnable"); - if(infoWindowEnable != null) { + if (infoWindowEnable != null) { sink.setInfoWindowEnable(ConvertUtil.toBoolean(infoWindowEnable)); } diff --git a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkersController.java b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkersController.java index 658e2b5..c1b6156 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkersController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/marker/MarkersController.java @@ -5,12 +5,10 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import com.amap.api.maps.AMap; -import com.amap.api.maps.TextureMapView; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.Marker; import com.amap.api.maps.model.MarkerOptions; import com.amap.api.maps.model.Poi; -import com.amap.api.maps.model.Polyline; import com.amap.flutter.map.MyMethodCallHandler; import com.amap.flutter.map.overlays.AbstractOverlayController; import com.amap.flutter.map.utils.Const; diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonController.java b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonController.java index 38bf544..21100d4 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonController.java @@ -3,7 +3,6 @@ package com.amap.flutter.map.overlays.polygon; import com.amap.api.maps.model.AMapPara; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.Polygon; -import com.amap.api.maps.model.PolygonOptions; import java.util.List; @@ -13,11 +12,12 @@ import java.util.List; * @mail hongming.whm@alibaba-inc.com * @since */ -class PolygonController implements PolygonOptionsSink{ +class PolygonController implements PolygonOptionsSink { private final Polygon polygon; private final String id; - PolygonController(Polygon polygon){ + + PolygonController(Polygon polygon) { this.polygon = polygon; this.id = polygon.getId(); } diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonOptionsBuilder.java b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonOptionsBuilder.java index ff35f62..2579fd7 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonOptionsBuilder.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonOptionsBuilder.java @@ -1,11 +1,8 @@ package com.amap.flutter.map.overlays.polygon; import com.amap.api.maps.model.AMapPara; -import com.amap.api.maps.model.BitmapDescriptor; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.PolygonOptions; -import com.amap.api.maps.model.PolylineOptions; -import com.amap.flutter.map.overlays.polyline.PolylineOptionsSink; import java.util.List; @@ -17,13 +14,14 @@ import java.util.List; */ class PolygonOptionsBuilder implements PolygonOptionsSink { final PolygonOptions polygonOptions; + PolygonOptionsBuilder() { polygonOptions = new PolygonOptions(); //必须设置为true,否则会出现线条转折处出现断裂的现象 polygonOptions.usePolylineStroke(true); } - public PolygonOptions build(){ + public PolygonOptions build() { return polygonOptions; } diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonUtil.java b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonUtil.java index 1f5b760..d7f459c 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonUtil.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonUtil.java @@ -1,7 +1,6 @@ package com.amap.flutter.map.overlays.polygon; import com.amap.api.maps.model.AMapPara; -import com.amap.flutter.map.overlays.polyline.PolylineOptionsSink; import com.amap.flutter.map.utils.ConvertUtil; import java.util.Map; diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonsController.java b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonsController.java index 3989ea4..517d9cb 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonsController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polygon/PolygonsController.java @@ -37,7 +37,7 @@ public class PolygonsController @Override public void doMethodCall(@NonNull MethodCall call, @NonNull MethodChannel.Result result) { String methodId = call.method; - LogUtil.i(CLASS_NAME, "doMethodCall===>" +methodId); + LogUtil.i(CLASS_NAME, "doMethodCall===>" + methodId); switch (methodId) { case Const.METHOD_POLYGON_UPDATE: invokePolylineOptions(call, result); @@ -51,7 +51,6 @@ public class PolygonsController } /** - * * @param methodCall * @param result */ diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineController.java b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineController.java index ac404d1..ba28d9e 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineController.java @@ -16,6 +16,7 @@ import java.util.List; class PolylineController implements PolylineOptionsSink { final Polyline polyline; final String polylineId; + PolylineController(Polyline polyline) { this.polyline = polyline; this.polylineId = polyline.getId(); @@ -26,10 +27,11 @@ class PolylineController implements PolylineOptionsSink { } public void remove() { - if(null != polyline) { + if (null != polyline) { polyline.remove(); } } + @Override public void setPoints(List points) { polyline.setPoints(points); diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineOptionsBuilder.java b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineOptionsBuilder.java index 670c5aa..4d96231 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineOptionsBuilder.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineOptionsBuilder.java @@ -1,6 +1,5 @@ package com.amap.flutter.map.overlays.polyline; -import com.amap.api.maps.model.AMapPara; import com.amap.api.maps.model.BitmapDescriptor; import com.amap.api.maps.model.LatLng; import com.amap.api.maps.model.PolylineOptions; @@ -95,7 +94,7 @@ class PolylineOptionsBuilder implements PolylineOptionsSink { polylineOptions.lineJoinType(joinType); } - public PolylineOptions build(){ + public PolylineOptions build() { return polylineOptions; } diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineUtil.java b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineUtil.java index 29958e6..b86b132 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineUtil.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylineUtil.java @@ -19,7 +19,7 @@ class PolylineUtil { private static final String CLASS_NAME = "PolylineUtil"; //虚线类型 - private static final int[] DASH_LINE_TYPE = {-1,0,1}; + private static final int[] DASH_LINE_TYPE = {-1, 0, 1}; static String interpretOptions(Object o, PolylineOptionsSink sink) { final Map data = ConvertUtil.toMap(o); @@ -60,7 +60,7 @@ class PolylineUtil { if (rawType > DASH_LINE_TYPE.length) { rawType = 0; } - if(DASH_LINE_TYPE[rawType] == -1) { + if (DASH_LINE_TYPE[rawType] == -1) { sink.setDashLine(false); } else { sink.setDashLine(true); @@ -100,7 +100,7 @@ class PolylineUtil { } final String dartId = (String) data.get("id"); - if(TextUtils.isEmpty(dartId)) { + if (TextUtils.isEmpty(dartId)) { Log.w(CLASS_NAME, "没有传入正确的dart层ID, 请确认对应的key值是否正确!!!"); } return dartId; diff --git a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylinesController.java b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylinesController.java index 93d63a6..93c972c 100644 --- a/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylinesController.java +++ b/android/src/main/java/com/amap/flutter/map/overlays/polyline/PolylinesController.java @@ -5,7 +5,6 @@ import android.text.TextUtils; import androidx.annotation.NonNull; import com.amap.api.maps.AMap; -import com.amap.api.maps.TextureMapView; import com.amap.api.maps.model.Polyline; import com.amap.api.maps.model.PolylineOptions; import com.amap.flutter.map.MyMethodCallHandler; @@ -68,7 +67,6 @@ public class PolylinesController } /** - * * @param methodCall * @param result */ @@ -145,5 +143,4 @@ public class PolylinesController } - } diff --git a/android/src/main/java/com/amap/flutter/map/utils/ConvertUtil.java b/android/src/main/java/com/amap/flutter/map/utils/ConvertUtil.java index 3d28e3f..26368ad 100644 --- a/android/src/main/java/com/amap/flutter/map/utils/ConvertUtil.java +++ b/android/src/main/java/com/amap/flutter/map/utils/ConvertUtil.java @@ -7,6 +7,8 @@ import android.graphics.Point; import android.location.Location; import android.text.TextUtils; +import androidx.annotation.NonNull; + import com.amap.api.maps.AMap; import com.amap.api.maps.CameraUpdate; import com.amap.api.maps.CameraUpdateFactory; @@ -28,8 +30,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import androidx.annotation.NonNull; - import io.flutter.view.FlutterMain; /** @@ -41,7 +41,7 @@ import io.flutter.view.FlutterMain; public class ConvertUtil { private static final String CLASS_NAME = "ConvertUtil"; - + private static final int[] LocationTypeMap = new int[]{MyLocationStyle.LOCATION_TYPE_SHOW, MyLocationStyle.LOCATION_TYPE_FOLLOW, MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE}; public static float density; private static String apiKey; @@ -72,7 +72,7 @@ public class ConvertUtil { if (null != hasAgreeObj) { boolean hasAgree = toBoolean(hasAgreeObj); //使用反射的方法调用适配之前的版本 - try{ + try { Method method = clazz.getMethod("updatePrivacyAgree", Context.class, boolean.class); method.invoke(null, context, hasAgree); } catch (Throwable e) { @@ -119,8 +119,8 @@ public class ConvertUtil { return CameraUpdateFactory.newLatLngZoom(toLatLng(data.get(1)), toFloat(data.get(2))); case "scrollBy": return CameraUpdateFactory.scrollBy( // - toFloatPixels(data.get(1)), // - toFloatPixels(data.get(2))); + toFloatPixels(data.get(1)), // + toFloatPixels(data.get(2))); case "zoomBy": if (data.size() == 2) { return CameraUpdateFactory.zoomBy(toFloat(data.get(1))); @@ -138,7 +138,6 @@ public class ConvertUtil { } } - private static Point toPoint(Object o) { final List data = toList(o); return new Point(toPixels(data.get(0)), toPixels(data.get(1))); @@ -297,8 +296,6 @@ public class ConvertUtil { return customMapStyleOptions; } - private static final int[] LocationTypeMap = new int[]{MyLocationStyle.LOCATION_TYPE_SHOW, MyLocationStyle.LOCATION_TYPE_FOLLOW, MyLocationStyle.LOCATION_TYPE_LOCATION_ROTATE}; - private static MyLocationStyle toMyLocationStyle(Object o, float density) { final Map map = toMap(o); final MyLocationStyle myLocationStyle = new MyLocationStyle(); diff --git a/android/src/main/java/com/amap/flutter/map/utils/LogUtil.java b/android/src/main/java/com/amap/flutter/map/utils/LogUtil.java index 9bba2f5..37d5533 100644 --- a/android/src/main/java/com/amap/flutter/map/utils/LogUtil.java +++ b/android/src/main/java/com/amap/flutter/map/utils/LogUtil.java @@ -10,29 +10,31 @@ import android.util.Log; * @since */ public class LogUtil { - public static boolean isDebugMode = false; private static final String TAG = "AMapFlutter_"; + public static boolean isDebugMode = false; + public static void i(String className, String message) { - if(isDebugMode) { - Log.i(TAG+className, message); + if (isDebugMode) { + Log.i(TAG + className, message); } } + public static void d(String className, String message) { - if(isDebugMode) { - Log.d(TAG+className, message); + if (isDebugMode) { + Log.d(TAG + className, message); } } public static void w(String className, String message) { - if(isDebugMode) { - Log.w(TAG+className, message); + if (isDebugMode) { + Log.w(TAG + className, message); } } public static void e(String className, String methodName, Throwable e) { if (isDebugMode) { - Log.e(TAG+className, methodName + " exception!!", e); + Log.e(TAG + className, methodName + " exception!!", e); } } diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index b95d093..c9ffa2d 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -25,7 +25,7 @@ apply plugin: 'com.android.application' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 29 + compileSdkVersion 33 lintOptions { disable 'InvalidPackage' @@ -35,7 +35,7 @@ android { // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html). applicationId "com.amap.flutter.amap_map_example" minSdkVersion flutter.minSdkVersion - targetSdkVersion 29 + targetSdkVersion 33 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/example/android/app/src/debug/AndroidManifest.xml b/example/android/app/src/debug/AndroidManifest.xml index ec7be3f..caf438b 100644 --- a/example/android/app/src/debug/AndroidManifest.xml +++ b/example/android/app/src/debug/AndroidManifest.xml @@ -3,5 +3,5 @@ - + diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 62f2a8a..5e223c7 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -5,48 +5,47 @@ In most cases you can leave this as-is, but you if you want to provide additional functionality it is fine to subclass or reimplement FlutterApplication and put your custom class here. --> - - - - - - - - + + + + + + + + + + android:icon="@mipmap/ic_launcher" + android:label="amap_map_example"> + android:name="io.flutter.embedding.android.NormalTheme" + android:resource="@style/NormalTheme" /> + android:name="io.flutter.embedding.android.SplashScreenDrawable" + android:resource="@drawable/launch_background" /> - - + + + diff --git a/example/android/app/src/profile/AndroidManifest.xml b/example/android/app/src/profile/AndroidManifest.xml index ec7be3f..caf438b 100644 --- a/example/android/app/src/profile/AndroidManifest.xml +++ b/example/android/app/src/profile/AndroidManifest.xml @@ -3,5 +3,5 @@ - + diff --git a/example/android/build.gradle b/example/android/build.gradle index 0b36833..bce512e 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -5,7 +5,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:4.2.2' } }