xue_hua_gaode_map 1.2.1 copy "xue_hua_gaode_map: ^1.2.1" to clipboard
xue_hua_gaode_map: ^1.2.1 copied to clipboard

Flutter plugin for the Amap (Gaode) SDK: location, geofencing, map and search, with a consistent Dart API on Android and iOS.

Changelog #

All notable changes to this project are documented in this file.

1.2.1 #

Changed #

  • Android consumer-rules.pro: broaden Gaode SDK ProGuard/R8 keep rules to cover com.amap.api.**, com.autonavi.**, com.amap.location.**, and com.autonavi.base.amap.mapcore.NativeBase, with matching -dontwarn entries for release builds.

Docs #

  • README / README_zh-CN: document consumer-rules.pro auto-merge via consumerProguardFiles, and include a copy-paste ProGuard block for host apps that need to apply the rules manually.

1.2.0 #

Fixed #

  • Dart client lifecycle: dispose now blocks in-flight API calls, cancels native EventChannel subscriptions, and closes broadcast streams on LocationClient, GeofenceClient, and OfflineMapClient.
  • GaodeClientDispose centralizes client teardown with retry on native failure and consistent disposed marking across location, geofence, and offline map clients.
  • OfflineMapClient marks instances disposed only after shared native destroy succeeds; failed destroy restores the reference count for retry.
  • GaodeMapController.dispose awaits managed event stream teardown (replaces fire-and-forget markDisposed).
  • Android takeSnapshot replies on the main thread (matches iOS).
  • iOS reverse geocode times out and releases the operation lock (matches Android).
  • location#stop and geofence pause/resume no longer recreate destroyed native registry entries.
  • Location and geofence EventChannel subscriptions report INVALID_ARGUMENT when clientId is missing.
  • iOS offline map destroy pauses active downloads before clearing the event sink.
  • Android search APIs now enforce Gaode privacy compliance before invoking the Search SDK.
  • Android map events are marshalled onto the main thread before reaching Flutter.
  • iOS plugin engine teardown now releases location, geofence, and offline map native resources (mirrors Android onDetachedFromEngine).
  • Android geofence createFinished events now include customId.
  • Android offline download progress attributes events to tracked city codes instead of always using the first downloading city.
  • iOS map takeSnapshot compiles correctly and delivers FlutterResult on the main queue.
  • Android location stream no longer emits updates when continuous tracking is inactive (matches iOS).
  • iOS map no longer emits duplicate cameraMoveStart events per gesture.
  • iOS map events are marshalled onto the main thread before reaching Flutter.
  • SearchClient throws GaodeException when the platform returns null instead of empty success payloads.
  • Geocode, geofence, and search list parsing throw GaodeException for malformed native payloads.
  • GaodeMapController throws StateError after its GaodeMapView is removed.
  • GaodeMapController now uses managed event stream teardown on dispose.
  • iOS plugin engine detach clears global EventChannel stream handlers.
  • OfflineMapClient reference-counts instances so disposing one client no longer destroys the shared native offline map backend.
  • Explicit duplicate clientId values on LocationClient and GeofenceClient now throw ArgumentError.
  • Geofence add operations eagerly subscribe to the event stream so createFinished events are not dropped.
  • Client dispose clears the cached dispose future when native teardown fails so callers can retry.
  • GeofenceClient.setActiveActions documents that allowsBackgroundLocationUpdates is iOS-only.
  • Android offline download STOP status now maps to cancelled (matches iOS).

1.1.1 #

Fixed #

  • iOS compile errors against AMap3DMap 11.x: unwrap optional MATileOverlay(urlTemplate:) and remove invalid MAOverlayRenderer.zIndex (not present in the 3D SDK).
  • iOS compile errors for optional overlay initializers (MAPolyline, MAPolygon, etc.).
  • iOS SDK compatibility: remove AMapLocationReGeocode.floor and offline-map .pause status cases not present in current AMap SDK versions.

Changed #

  • iOS overlay zIndex is applied via MAMapView.insertOverlay(_:at:level:) insert order (ground overlays use MAOverlayLevelAboveRoads; others use MAOverlayLevelAboveLabels), aligning stacking behavior with Android.
  • iOS marker zIndex is applied on MAAnnotationView in viewFor annotation.
  • iOS tile overlay visible alpha is applied in rendererFor.

1.1.0 #

Added #

  • Full Gaode 3D map Dart API: camera controls (getCameraPosition, animateCamera, fitBounds, setMapRegionLimits, zoomIn/zoomOut), display toggles (traffic, buildings, indoor, terrain, compass, scale, logo), markers with custom icons and drag events, and overlay types (polyline, polygon, circle, arc, ground, heatmap, multi-point, tile).
  • Per-view EventChannel map events including GaodeMapInfoWindowTapEvent.
  • OfflineMapClient for offline city catalog, download management, and progress stream.
  • Map tools: takeSnapshot, toScreenLocation, fromScreenLocation.
  • Example app map tab demos: traffic, animated camera, overlays, fit bounds, ground overlay, heatmap, and offline catalog probe.
  • Location SDK: LocationOptions fields gpsFirst, gpsFirstTimeout, sensorEnable (Android), and locationTimeout / reGeocodeTimeout (iOS). Android now maps protocol and wifiActiveScan (via setWifiScan) correctly.
  • Map my-location: GaodeMyLocationStyle, GaodeMyLocationType, GaodeUserTrackingMode, setMyLocationStyle, getMyLocation, moveToMyLocation.
  • Map events: GaodeMapMyLocationChangeEvent, GaodeMapUserTrackingModeChangeEvent (iOS).

Fixed #

  • Wired GaodeMapMarker.infoWindowEnabled and native infoWindowTap events on Android and iOS.
  • iOS animateCamera bearing/tilt duration; fitBounds padding via setVisibleMapRect(_:edgePadding:animated:).
  • iOS polyline dottedLine via MALineDashType.
  • Android compile issues (setMapStatusLimits, logo/zoom position constants, offline map getcompleteCode()).
  • iOS OfflineMapHandler and overlay APIs aligned with AMap iOS SDK.
  • Android takeSnapshot replying twice to Flutter.
  • Android map lifecycle registry leak on platform view dispose.
  • Android offline map progress events marshalled on the main thread.
  • Android clearing map region limits when setMapRegionLimits(null) is called.
  • Android heatmap opacity applied via tile provider transparency.
  • iOS search handlers double-replying when privacy or API key checks fail.
  • iOS geofence handlers hanging when clientId is missing.
  • iOS custom marker anchor offset calculation.
  • iOS offline map pause no longer calls cancelAll() when a city is not found.
  • iOS overlay visible / zIndex, tile tileSize, initial regionLimits, and offline "paused" status wiring.
  • iOS LocationResult no longer hard-codes locationType; enriches re-geocode fields when available.
  • Android moveToMyLocation restores the configured myLocationStyle after a temporary one-shot locate when no fix was cached.
  • iOS setMyLocationEnabled(true) re-applies my-location representation and tracking mode.
  • Android LocationOptions.locationPurpose: none clears the native scene (sets purpose to null).

Removed #

  • Reserved clusterEnabled / setClusterEnabled stub API (not implemented in native SDK integration).

Changed #

  • Breaking: Removed reserved clusterEnabled / setClusterEnabled stub API.
  • Map platform channels now return INVALID_ARGUMENT for invalid overlay and camera inputs instead of silently succeeding.
  • iOS cameraMove events are emitted continuously during map movement to match Android.

1.0.1 #

  • iOS: fix a hard crash when calling location/geofence/search APIs without a configured API key. The plugin now reads AMapApiKey from Info.plist at startup (matching Android's manifest auto-read), and unconfigured keys surface as a catchable API_KEY_NOT_CONFIGURED error instead of crashing the app.
  • Docs: clarify iOS API key setup (Info.plist auto-read, GaodeSdk.setApiKey runtime override).

1.0.0 #

  • First stable release.
  • Core: privacy compliance, runtime API key, reverse-geocode language, Android country code.
  • Location: single/continuous positioning, location stream, reverse geocoding.
  • Geofence: circle/polygon/POI/district fences with create and trigger events.
  • Map: native PlatformView with camera, map type, my-location dot, and markers.
  • Search: POI keyword/around search, input tips, and forward geocoding.
  • Consistent error handling: native failures surface as GaodeException on both platforms.
1
likes
150
points
28
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter plugin for the Amap (Gaode) SDK: location, geofencing, map and search, with a consistent Dart API on Android and iOS.

Repository (GitHub)
View/report issues

Topics

#amap #gaode #location #geofence #map

License

Apache-2.0 (license)

Dependencies

flutter

More

Packages that depend on xue_hua_gaode_map

Packages that implement xue_hua_gaode_map