拓展插件支持
This commit is contained in:
parent
5abe4d7f6d
commit
8c2b86724b
|
@ -4,6 +4,7 @@ import 'package:amap_map_example/main.dart';
|
||||||
import 'package:amap_map_example/pages/interactive/map_ui_options.dart';
|
import 'package:amap_map_example/pages/interactive/map_ui_options.dart';
|
||||||
import 'package:amap_map_example/pages/map/limit_map_bounds.dart';
|
import 'package:amap_map_example/pages/map/limit_map_bounds.dart';
|
||||||
import 'package:amap_map_example/pages/map/map_my_location.dart';
|
import 'package:amap_map_example/pages/map/map_my_location.dart';
|
||||||
|
import 'package:amap_map_example/pages/map/map_with_extension_page.dart';
|
||||||
import 'package:amap_map_example/pages/map/show_map_page.dart';
|
import 'package:amap_map_example/pages/map/show_map_page.dart';
|
||||||
import 'package:amap_map_example/pages/overlays/marker_config.dart';
|
import 'package:amap_map_example/pages/overlays/marker_config.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
@ -16,7 +17,8 @@ class DemoConfiguration {
|
||||||
final WidgetBuilder buildRoute;
|
final WidgetBuilder buildRoute;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Demo> allDemos() => mapDemos() + interactiveDemos() + overlayDemos();
|
List<Demo> allDemos() =>
|
||||||
|
mapDemos() + interactiveDemos() + overlayDemos() + extensionDemos();
|
||||||
|
|
||||||
List<Demo> mapDemos() {
|
List<Demo> mapDemos() {
|
||||||
return [
|
return [
|
||||||
|
@ -73,6 +75,19 @@ List<Demo> overlayDemos() {
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Demo> extensionDemos() {
|
||||||
|
return [
|
||||||
|
Demo(
|
||||||
|
title: '辅助信息获取',
|
||||||
|
category: DemoCategory.extension,
|
||||||
|
subtitle: '获取审图号',
|
||||||
|
slug: 'extension-info',
|
||||||
|
configurations: [
|
||||||
|
DemoConfiguration(buildRoute: (context) => MapWithExtensionPage())
|
||||||
|
])
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
Map<String?, Demo> slugToDemo(BuildContext context) {
|
Map<String?, Demo> slugToDemo(BuildContext context) {
|
||||||
return LinkedHashMap<String?, Demo>.fromIterable(
|
return LinkedHashMap<String?, Demo>.fromIterable(
|
||||||
allDemos(),
|
allDemos(),
|
||||||
|
|
|
@ -109,6 +109,13 @@ class _AMapDemoState extends State<AMapDemo>
|
||||||
category: DemoCategory.overlay,
|
category: DemoCategory.overlay,
|
||||||
demos: overlayDemos(),
|
demos: overlayDemos(),
|
||||||
)),
|
)),
|
||||||
|
AnimatedCategoryItem(
|
||||||
|
startDelayFraction: 0.15,
|
||||||
|
controller: _animationController,
|
||||||
|
child: CategoryListItem(
|
||||||
|
category: DemoCategory.extension,
|
||||||
|
demos: extensionDemos(),
|
||||||
|
)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
@ -134,7 +141,8 @@ void main() {
|
||||||
enum DemoCategory {
|
enum DemoCategory {
|
||||||
basic,
|
basic,
|
||||||
interactive,
|
interactive,
|
||||||
overlay;
|
overlay,
|
||||||
|
extension;
|
||||||
|
|
||||||
String toDisplayTitle() {
|
String toDisplayTitle() {
|
||||||
switch (this) {
|
switch (this) {
|
||||||
|
@ -144,6 +152,8 @@ enum DemoCategory {
|
||||||
return '与地图交互';
|
return '与地图交互';
|
||||||
case overlay:
|
case overlay:
|
||||||
return '在地图上绘制';
|
return '在地图上绘制';
|
||||||
|
case extension:
|
||||||
|
return '拓展插件';
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -355,12 +355,12 @@ class _MapUiBodyState extends State<AllMapConfigDemoPage> {
|
||||||
}
|
}
|
||||||
|
|
||||||
void printApprovalNumber() async {
|
void printApprovalNumber() async {
|
||||||
String mapContentApprovalNumber =
|
// String mapContentApprovalNumber =
|
||||||
(await _controller.getMapContentApprovalNumber())!;
|
// (await _controller.getMapContentApprovalNumber())!;
|
||||||
String satelliteImageApprovalNumber =
|
// String satelliteImageApprovalNumber =
|
||||||
(await _controller.getSatelliteImageApprovalNumber())!;
|
// (await _controller.getSatelliteImageApprovalNumber())!;
|
||||||
print('地图审图号(普通地图): $mapContentApprovalNumber');
|
// print('地图审图号(普通地图): $mapContentApprovalNumber');
|
||||||
print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
|
// print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget createGridView(List<Widget> widgets) {
|
Widget createGridView(List<Widget> widgets) {
|
||||||
|
|
|
@ -0,0 +1,71 @@
|
||||||
|
import 'package:amap_map_extensions/amap_map_extensions.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
import 'dart:typed_data';
|
||||||
|
|
||||||
|
import 'package:amap_map/amap_map.dart';
|
||||||
|
|
||||||
|
class MapWithExtensionPage extends StatefulWidget {
|
||||||
|
@override
|
||||||
|
State<StatefulWidget> createState() => _MapWithExtensionPageState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _MapWithExtensionPageState extends State<MapWithExtensionPage> {
|
||||||
|
List<Widget> _approvalNumberWidget = <Widget>[];
|
||||||
|
final _extension = AmapMapExtensions();
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
final AMapWidget map = AMapWidget(
|
||||||
|
onMapCreated: onMapCreated,
|
||||||
|
extensions: [_extension],
|
||||||
|
);
|
||||||
|
|
||||||
|
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),
|
||||||
|
))
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
late AMapController _mapController;
|
||||||
|
void onMapCreated(AMapController controller) {
|
||||||
|
setState(() {
|
||||||
|
_mapController = controller;
|
||||||
|
getApprovalNumber();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 获取审图号
|
||||||
|
void getApprovalNumber() async {
|
||||||
|
//普通地图审图号
|
||||||
|
String mapContentApprovalNumber =
|
||||||
|
(await _extension.getMapContentApprovalNumber())!;
|
||||||
|
//卫星地图审图号
|
||||||
|
String satelliteImageApprovalNumber =
|
||||||
|
(await _extension.getSatelliteImageApprovalNumber())!;
|
||||||
|
setState(() {
|
||||||
|
_approvalNumberWidget.add(Text(mapContentApprovalNumber));
|
||||||
|
_approvalNumberWidget.add(Text(satelliteImageApprovalNumber));
|
||||||
|
});
|
||||||
|
print('地图审图号(普通地图): $mapContentApprovalNumber');
|
||||||
|
print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
|
||||||
|
}
|
||||||
|
}
|
|
@ -43,23 +43,23 @@ class _ShowMapPageState extends State<ShowMapPage> {
|
||||||
void onMapCreated(AMapController controller) {
|
void onMapCreated(AMapController controller) {
|
||||||
setState(() {
|
setState(() {
|
||||||
_mapController = controller;
|
_mapController = controller;
|
||||||
getApprovalNumber();
|
// getApprovalNumber();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 获取审图号
|
/// 获取审图号
|
||||||
void getApprovalNumber() async {
|
void getApprovalNumber() async {
|
||||||
//普通地图审图号
|
// //普通地图审图号
|
||||||
String mapContentApprovalNumber =
|
// String mapContentApprovalNumber =
|
||||||
(await _mapController.getMapContentApprovalNumber())!;
|
// (await _mapController.getMapContentApprovalNumber())!;
|
||||||
//卫星地图审图号
|
// //卫星地图审图号
|
||||||
String satelliteImageApprovalNumber =
|
// String satelliteImageApprovalNumber =
|
||||||
(await _mapController.getSatelliteImageApprovalNumber())!;
|
// (await _mapController.getSatelliteImageApprovalNumber())!;
|
||||||
setState(() {
|
// setState(() {
|
||||||
_approvalNumberWidget.add(Text(mapContentApprovalNumber));
|
// _approvalNumberWidget.add(Text(mapContentApprovalNumber));
|
||||||
_approvalNumberWidget.add(Text(satelliteImageApprovalNumber));
|
// _approvalNumberWidget.add(Text(satelliteImageApprovalNumber));
|
||||||
});
|
// });
|
||||||
print('地图审图号(普通地图): $mapContentApprovalNumber');
|
// print('地图审图号(普通地图): $mapContentApprovalNumber');
|
||||||
print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
|
// print('地图审图号(卫星地图): $satelliteImageApprovalNumber');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,8 +23,8 @@ dependencies:
|
||||||
# the parent directory to use the current plugin's version.
|
# the parent directory to use the current plugin's version.
|
||||||
path: ../
|
path: ../
|
||||||
|
|
||||||
# amap_map:
|
amap_map_extensions:
|
||||||
# path: ../../amap_map
|
path: ../../amap_map_extensions
|
||||||
|
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
|
|
|
@ -18,3 +18,4 @@ export 'package:amap_map/src/types/types.dart';
|
||||||
part 'src/amap_initializer.dart';
|
part 'src/amap_initializer.dart';
|
||||||
part 'src/amap_controller.dart';
|
part 'src/amap_controller.dart';
|
||||||
part 'src/amap_widget.dart';
|
part 'src/amap_widget.dart';
|
||||||
|
part 'src/amap_loader.dart';
|
||||||
|
|
|
@ -115,34 +115,11 @@ class AMapController {
|
||||||
mapId: mapId, animated: animated, duration: duration);
|
mapId: mapId, animated: animated, duration: duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
///设置地图每秒渲染的帧数
|
|
||||||
Future<void> setRenderFps(int fps) {
|
|
||||||
return _methodChannel.setRenderFps(fps, mapId: mapId);
|
|
||||||
}
|
|
||||||
|
|
||||||
///地图截屏
|
///地图截屏
|
||||||
Future<Uint8List?> takeSnapshot() {
|
Future<Uint8List?> takeSnapshot() {
|
||||||
return _methodChannel.takeSnapshot(mapId: mapId);
|
return _methodChannel.takeSnapshot(mapId: mapId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// 获取地图审图号(普通地图)
|
|
||||||
///
|
|
||||||
/// 任何使用高德地图API调用地图服务的应用必须在其应用中对外透出审图号
|
|
||||||
///
|
|
||||||
/// 如高德地图在"关于"中体现
|
|
||||||
Future<String?> getMapContentApprovalNumber() {
|
|
||||||
return _methodChannel.getMapContentApprovalNumber(mapId: mapId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 获取地图审图号(卫星地图)
|
|
||||||
///
|
|
||||||
/// 任何使用高德地图API调用地图服务的应用必须在其应用中对外透出审图号
|
|
||||||
///
|
|
||||||
/// 如高德地图在"关于"中体现
|
|
||||||
Future<String?> getSatelliteImageApprovalNumber() {
|
|
||||||
return _methodChannel.getSatelliteImageApprovalNumber(mapId: mapId);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// 清空缓存
|
/// 清空缓存
|
||||||
Future<void> clearDisk() {
|
Future<void> clearDisk() {
|
||||||
return _methodChannel.clearDisk(mapId: mapId);
|
return _methodChannel.clearDisk(mapId: mapId);
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
part of amap_map;
|
||||||
|
|
||||||
|
class AMapLoader extends StatefulWidget {
|
||||||
|
const AMapLoader(
|
||||||
|
{super.key, required this.mapView, required this.extensions});
|
||||||
|
|
||||||
|
final Widget mapView;
|
||||||
|
final List<AMapExtension> extensions;
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<AMapLoader> createState() => _AMapLoaderState();
|
||||||
|
|
||||||
|
static void prepare() {
|
||||||
|
// TODO loop handle with extensions
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget buildFromExtension(AMapContext aMapContext) {
|
||||||
|
// TODO loop handle with extensions
|
||||||
|
return mapView;
|
||||||
|
}
|
||||||
|
|
||||||
|
void prepareFromExtension(AMapContext aMapContext) {
|
||||||
|
for (var e in extensions) {
|
||||||
|
e.prepare(aMapContext);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
class _AMapLoaderState extends State<AMapLoader> {
|
||||||
|
@override
|
||||||
|
void didChangeDependencies() {
|
||||||
|
final aMapContext = AMapContext(
|
||||||
|
buildContext: context,
|
||||||
|
currentStep: CurrentStep.preparing,
|
||||||
|
loader: widget);
|
||||||
|
widget.prepareFromExtension(aMapContext);
|
||||||
|
super.didChangeDependencies();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
for (var e in widget.extensions) {
|
||||||
|
e.onDispose();
|
||||||
|
}
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
// Set the extension context for this node.
|
||||||
|
final aMapContext = AMapContext(
|
||||||
|
buildContext: context,
|
||||||
|
currentStep: CurrentStep.building,
|
||||||
|
loader: widget);
|
||||||
|
|
||||||
|
return widget.buildFromExtension(aMapContext);
|
||||||
|
}
|
||||||
|
}
|
|
@ -97,6 +97,8 @@ class AMapWidget extends StatefulWidget {
|
||||||
///需要应用到地图上的手势集合
|
///需要应用到地图上的手势集合
|
||||||
final Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers;
|
final Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers;
|
||||||
|
|
||||||
|
final List<AMapExtension> extensions;
|
||||||
|
|
||||||
/// 创建一个展示高德地图的widget
|
/// 创建一个展示高德地图的widget
|
||||||
///
|
///
|
||||||
/// 在app首次启动时必须传入高德合规声明配置[privacyStatement],后续如果没有变化不需要重复设置
|
/// 在app首次启动时必须传入高德合规声明配置[privacyStatement],后续如果没有变化不需要重复设置
|
||||||
|
@ -108,37 +110,38 @@ class AMapWidget extends StatefulWidget {
|
||||||
/// 高德SDK合规使用方案请参考:https://lbs.amap.com/news/sdkhgsy
|
/// 高德SDK合规使用方案请参考:https://lbs.amap.com/news/sdkhgsy
|
||||||
///
|
///
|
||||||
/// [AssertionError] will be thrown if [initialCameraPosition] is null;
|
/// [AssertionError] will be thrown if [initialCameraPosition] is null;
|
||||||
const AMapWidget({
|
const AMapWidget(
|
||||||
Key? key,
|
{Key? key,
|
||||||
this.initialCameraPosition =
|
this.initialCameraPosition =
|
||||||
const CameraPosition(target: LatLng(39.909187, 116.397451), zoom: 10),
|
const CameraPosition(target: LatLng(39.909187, 116.397451), zoom: 10),
|
||||||
this.mapType = MapType.normal,
|
this.mapType = MapType.normal,
|
||||||
this.buildingsEnabled = true,
|
this.buildingsEnabled = true,
|
||||||
this.compassEnabled = false,
|
this.compassEnabled = false,
|
||||||
this.labelsEnabled = true,
|
this.labelsEnabled = true,
|
||||||
this.limitBounds,
|
this.limitBounds,
|
||||||
this.minMaxZoomPreference,
|
this.minMaxZoomPreference,
|
||||||
this.rotateGesturesEnabled = true,
|
this.rotateGesturesEnabled = true,
|
||||||
this.scaleEnabled = true,
|
this.scaleEnabled = true,
|
||||||
this.scrollGesturesEnabled = true,
|
this.scrollGesturesEnabled = true,
|
||||||
this.tiltGesturesEnabled = true,
|
this.tiltGesturesEnabled = true,
|
||||||
this.touchPoiEnabled = true,
|
this.touchPoiEnabled = true,
|
||||||
this.trafficEnabled = false,
|
this.trafficEnabled = false,
|
||||||
this.zoomGesturesEnabled = true,
|
this.zoomGesturesEnabled = true,
|
||||||
this.onMapCreated,
|
this.onMapCreated,
|
||||||
this.gestureRecognizers = const <Factory<OneSequenceGestureRecognizer>>{},
|
this.gestureRecognizers = const <Factory<OneSequenceGestureRecognizer>>{},
|
||||||
this.customStyleOptions,
|
this.customStyleOptions,
|
||||||
this.myLocationStyleOptions,
|
this.myLocationStyleOptions,
|
||||||
this.onCameraMove,
|
this.onCameraMove,
|
||||||
this.onCameraMoveEnd,
|
this.onCameraMoveEnd,
|
||||||
this.onLocationChanged,
|
this.onLocationChanged,
|
||||||
this.onTap,
|
this.onTap,
|
||||||
this.onLongPress,
|
this.onLongPress,
|
||||||
this.onPoiTouched,
|
this.onPoiTouched,
|
||||||
this.markers = const <Marker>{},
|
this.markers = const <Marker>{},
|
||||||
this.polylines = const <Polyline>{},
|
this.polylines = const <Polyline>{},
|
||||||
this.polygons = const <Polygon>{},
|
this.polygons = const <Polygon>{},
|
||||||
}) : super(key: key);
|
this.extensions = const []})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
|
@ -149,6 +152,7 @@ class _MapState extends State<AMapWidget> {
|
||||||
Map<String, Marker> _markers = <String, Marker>{};
|
Map<String, Marker> _markers = <String, Marker>{};
|
||||||
Map<String, Polyline> _polylines = <String, Polyline>{};
|
Map<String, Polyline> _polylines = <String, Polyline>{};
|
||||||
Map<String, Polygon> _polygons = <String, Polygon>{};
|
Map<String, Polygon> _polygons = <String, Polygon>{};
|
||||||
|
Map<String, AMapExtension> _extensions = <String, AMapExtension>{};
|
||||||
|
|
||||||
final Completer<AMapController> _controller = Completer<AMapController>();
|
final Completer<AMapController> _controller = Completer<AMapController>();
|
||||||
late _AMapOptions _mapOptions;
|
late _AMapOptions _mapOptions;
|
||||||
|
@ -169,16 +173,23 @@ class _MapState extends State<AMapWidget> {
|
||||||
widget.gestureRecognizers,
|
widget.gestureRecognizers,
|
||||||
onPlatformViewCreated,
|
onPlatformViewCreated,
|
||||||
);
|
);
|
||||||
return mapView;
|
|
||||||
|
return AMapLoader(
|
||||||
|
mapView: mapView,
|
||||||
|
extensions: widget.extensions,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
|
AMapLoader.prepare();
|
||||||
super.initState();
|
super.initState();
|
||||||
_mapOptions = _AMapOptions.fromWidget(widget);
|
_mapOptions = _AMapOptions.fromWidget(widget);
|
||||||
_markers = keyByMarkerId(widget.markers);
|
_markers = keyByMarkerId(widget.markers);
|
||||||
_polygons = keyByPolygonId(widget.polygons);
|
_polygons = keyByPolygonId(widget.polygons);
|
||||||
_polylines = keyByPolylineId(widget.polylines);
|
_polylines = keyByPolylineId(widget.polylines);
|
||||||
|
|
||||||
|
_extensions = keyByExtensionId(widget.extensions);
|
||||||
print('initState AMapWidget');
|
print('initState AMapWidget');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -218,6 +229,12 @@ class _MapState extends State<AMapWidget> {
|
||||||
this,
|
this,
|
||||||
);
|
);
|
||||||
_controller.complete(controller);
|
_controller.complete(controller);
|
||||||
|
|
||||||
|
if (_extensions.isNotEmpty) {
|
||||||
|
await Future.forEach(
|
||||||
|
_extensions.values, (e) => e.bindMethodChannel(controller.channel));
|
||||||
|
}
|
||||||
|
|
||||||
final MapCreatedCallback? _onMapCreated = widget.onMapCreated;
|
final MapCreatedCallback? _onMapCreated = widget.onMapCreated;
|
||||||
if (_onMapCreated != null) {
|
if (_onMapCreated != null) {
|
||||||
_onMapCreated(controller);
|
_onMapCreated(controller);
|
||||||
|
|
|
@ -235,14 +235,6 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
///设置地图每秒渲染的帧数
|
|
||||||
Future<void> setRenderFps(int fps, {required int mapId}) {
|
|
||||||
return channel(mapId)
|
|
||||||
.invokeMethod<void>('map#setRenderFps', <String, dynamic>{
|
|
||||||
'fps': fps,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
///截屏
|
///截屏
|
||||||
Future<Uint8List?> takeSnapshot({
|
Future<Uint8List?> takeSnapshot({
|
||||||
required int mapId,
|
required int mapId,
|
||||||
|
@ -250,21 +242,6 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
|
||||||
return channel(mapId).invokeMethod<Uint8List>('map#takeSnapshot');
|
return channel(mapId).invokeMethod<Uint8List>('map#takeSnapshot');
|
||||||
}
|
}
|
||||||
|
|
||||||
//获取地图审图号(普通地图)
|
|
||||||
Future<String?> getMapContentApprovalNumber({
|
|
||||||
required int mapId,
|
|
||||||
}) {
|
|
||||||
return channel(mapId).invokeMethod<String>('map#contentApprovalNumber');
|
|
||||||
}
|
|
||||||
|
|
||||||
//获取地图审图号(卫星地图)
|
|
||||||
Future<String?> getSatelliteImageApprovalNumber({
|
|
||||||
required int mapId,
|
|
||||||
}) {
|
|
||||||
return channel(mapId)
|
|
||||||
.invokeMethod<String>('map#satelliteImageApprovalNumber');
|
|
||||||
}
|
|
||||||
|
|
||||||
Future<void> clearDisk({
|
Future<void> clearDisk({
|
||||||
required int mapId,
|
required int mapId,
|
||||||
}) {
|
}) {
|
||||||
|
|
|
@ -0,0 +1,30 @@
|
||||||
|
import 'package:flutter/services.dart';
|
||||||
|
|
||||||
|
import 'types.dart';
|
||||||
|
|
||||||
|
abstract class AMapExtension {
|
||||||
|
late String _id;
|
||||||
|
|
||||||
|
String get id => _id;
|
||||||
|
|
||||||
|
AMapExtension() {
|
||||||
|
this._id = this.hashCode.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
void prepare(AMapContext aMapContext) {}
|
||||||
|
|
||||||
|
void onDispose() {}
|
||||||
|
|
||||||
|
bindMethodChannel(MethodChannel channel) {}
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<String, AMapExtension> keyByExtensionId(
|
||||||
|
Iterable<AMapExtension> extensions) {
|
||||||
|
// ignore: unnecessary_null_comparison
|
||||||
|
if (extensions == null) {
|
||||||
|
return <String, AMapExtension>{};
|
||||||
|
}
|
||||||
|
return Map<String, AMapExtension>.fromEntries(extensions.map(
|
||||||
|
(AMapExtension extension) =>
|
||||||
|
MapEntry<String, AMapExtension>(extension.id, extension)));
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
import 'package:amap_map/amap_map.dart';
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
class AMapContext {
|
||||||
|
final BuildContext buildContext;
|
||||||
|
final CurrentStep currentStep;
|
||||||
|
final AMapLoader loader;
|
||||||
|
|
||||||
|
AMapContext(
|
||||||
|
{required this.buildContext,
|
||||||
|
required this.currentStep,
|
||||||
|
required this.loader});
|
||||||
|
}
|
||||||
|
|
||||||
|
enum CurrentStep {
|
||||||
|
preparing,
|
||||||
|
building,
|
||||||
|
}
|
|
@ -8,3 +8,5 @@ export 'polyline_updates.dart';
|
||||||
export 'polygon.dart';
|
export 'polygon.dart';
|
||||||
export 'polygon_updates.dart';
|
export 'polygon_updates.dart';
|
||||||
export 'bitmap.dart';
|
export 'bitmap.dart';
|
||||||
|
export 'extension_context.dart';
|
||||||
|
export 'amap_extension.dart';
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
name: amap_map
|
name: amap_map
|
||||||
description: Amap SDK Flutter plugin for integrating AMapSDK in iOS and Android applications.
|
description: Amap SDK Flutter plugin for integrating AMapSDK in iOS and Android applications.
|
||||||
version: 1.0.1
|
version: 1.0.1+1
|
||||||
homepage: https://github.com/kuloud/amap_map
|
homepage: https://github.com/kuloud/amap_map
|
||||||
issue_tracker: https://github.com/kuloud/amap_map/issues
|
issue_tracker: https://github.com/kuloud/amap_map/issues
|
||||||
platforms:
|
platforms:
|
||||||
|
|
Loading…
Reference in New Issue