提交 abde6a33 authored 作者: 史晓晨's avatar 史晓晨

feat:①重构地图插件(修改各端方式实现)②兼容各端实现

上级 a1f5aea9
import 'dart:convert';
import 'dart:html';
import 'dart:js_util';
import 'dart:ui_web';
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart';
import 'package:flutter_web_plugins/flutter_web_plugins.dart';
import 'src/core/amap_flutter_platform.dart';
import 'src/core/map_event.dart';
import 'src/web/amap.dart';
import 'src/web/amap_loader.dart';
import 'src/web/utils.dart';
/**
* web地图
*/
class AmapFlutterMapWeb extends AMapFlutterPlatform {
AmapFlutterMapWeb();
static void registerWith(Registrar registrar) {
AMapFlutterPlatform.instance = AmapFlutterMapWeb();
}
@override
Widget buildView(
Map<String, dynamic> creationParams,
Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers,
PlatformViewCreatedCallback onPlatformViewCreated) {
late DivElement _element;
/// 这里使用时间作为唯一标识
String _divId = DateTime.now().toIso8601String();
/// 先创建div并注册
platformViewRegistry.registerViewFactory(_divId, (int viewId) {
/// 地图需要的Div
_element = DivElement()
..style.width = '100%'
..style.height = '100%'
..style.margin = '0';
return _element;
});
SchedulerBinding.instance.addPostFrameCallback((_) {
/// 创建地图
var promise = load(LoaderOptions(
key: 'f759e608583c169bb23d7817ed05583d',
version: '2.0',
plugins: ['AMap.Scale'],
));
promiseToFuture(promise).then((value) {
consoleLog('初始化成功:value = ${stringify(value)}');
MapOptions _mapOptions = MapOptions(
zoom: 13,
);
AMap aMap = AMap(_element, _mapOptions);
}, onError: (e) {
print('初始化错误:$e');
});
});
return HtmlElementView(
viewType: _divId,
onPlatformViewCreated: onPlatformViewCreated,
);
}
}
part of amap_flutter_map; part of amap_flutter_map;
final MethodChannelAMapFlutterMap _methodChannel = final AMapFlutterPlatform _methodChannel = AMapFlutterPlatform.instance;
AMapFlutterPlatform.instance as MethodChannelAMapFlutterMap;
/// 地图通信中心 /// 地图通信中心
class AMapController { class AMapController {
...@@ -155,8 +154,7 @@ class AMapController { ...@@ -155,8 +154,7 @@ class AMapController {
return _methodChannel.containsPoint(point, id, mapId: mapId); return _methodChannel.containsPoint(point, id, mapId: mapId);
} }
//地图可视区域 /// 地图可视区域
Future<dynamic> getVisibleRegion() { Future<dynamic> getVisibleRegion() {
return _methodChannel.getVisibleRegion(mapId: mapId); return _methodChannel.getVisibleRegion(mapId: mapId);
} }
......
import 'package:amap_flutter_base/amap_flutter_base.dart';
import 'package:amap_flutter_map/src/core/method_channel_amap_flutter_map.dart'; import 'package:amap_flutter_map/src/core/method_channel_amap_flutter_map.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
...@@ -5,9 +6,13 @@ import 'package:flutter/gestures.dart'; ...@@ -5,9 +6,13 @@ import 'package:flutter/gestures.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:plugin_platform_interface/plugin_platform_interface.dart'; import 'package:plugin_platform_interface/plugin_platform_interface.dart';
import '../types/types.dart';
import 'map_event.dart';
/// “amap_flutter_map”平台特定实现必须扩展的接口 /// “amap_flutter_map”平台特定实现必须扩展的接口
abstract class AMapFlutterPlatform extends PlatformInterface { abstract class AMapFlutterPlatform extends PlatformInterface {
static final Object _token = Object(); static final Object _token = Object();
AMapFlutterPlatform() : super(token: _token); AMapFlutterPlatform() : super(token: _token);
static AMapFlutterPlatform _instance = MethodChannelAMapFlutterMap(); static AMapFlutterPlatform _instance = MethodChannelAMapFlutterMap();
...@@ -38,4 +43,172 @@ abstract class AMapFlutterPlatform extends PlatformInterface { ...@@ -38,4 +43,172 @@ abstract class AMapFlutterPlatform extends PlatformInterface {
PlatformViewCreatedCallback onPlatformViewCreated) { PlatformViewCreatedCallback onPlatformViewCreated) {
throw UnimplementedError('buildView() has not been implemented.'); throw UnimplementedError('buildView() has not been implemented.');
} }
/// 定位回调
Stream<LocationChangedEvent> onLocationChanged({required int mapId}) {
throw UnimplementedError('onLocationChanged() has not been implemented.');
}
/// Camera 移动回调
Stream<CameraPositionMoveEvent> onCameraMove({required int mapId}) {
throw UnimplementedError('onCameraMove() has not been implemented.');
}
/// Camera 移动结束回调
Stream<CameraPositionMoveEndEvent> onCameraMoveEnd({required int mapId}) {
throw UnimplementedError('onCameraMoveEnd() has not been implemented.');
}
///Camera 搜索POI回调
Stream<MapSearchPOIEvent> mapSearchPOI({required int mapId}) {
throw UnimplementedError('mapSearchPOI() has not been implemented.');
}
///Camera 搜索inputtips回调
Stream<MapSearchInputTipsEvent> mapSearchInputTips({required int mapId}) {
throw UnimplementedError('mapSearchInputTips() has not been implemented.');
}
///Camera 搜索regeocode回调
Stream<MapSearchRegeocodeEvent> mapSearchRegeocode({required int mapId}) {
throw UnimplementedError('mapSearchRegeocode() has not been implemented.');
}
/// 地图点击回调
Stream<MapTapEvent> onMapTap({required int mapId}) {
throw UnimplementedError('onMapTap() has not been implemented.');
}
/// 地图长按回调
Stream<MapLongPressEvent> onMapLongPress({required int mapId}) {
throw UnimplementedError('onMapLongPress() has not been implemented.');
}
/// poi点击回调
Stream<MapPoiTouchEvent> onPoiTouched({required int mapId}) {
throw UnimplementedError('onPoiTouched() has not been implemented.');
}
/// marker点击回调
Stream<MarkerTapEvent> onMarkerTap({required int mapId}) {
throw UnimplementedError('onMarkerTap() has not been implemented.');
}
/// marker拖拽回调
Stream<MarkerDragEndEvent> onMarkerDragEnd({required int mapId}) {
throw UnimplementedError('onMarkerDragEnd() has not been implemented.');
}
/// polyline点击回调
Stream<PolylineTapEvent> onPolylineTap({required int mapId}) {
throw UnimplementedError('onPolylineTap() has not been implemented.');
}
/// 更新地图参数
Future<void> updateMapOptions(
Map<String, dynamic> newOptions, {
required int mapId,
}) {
throw UnimplementedError('updateMapOptions() has not been implemented.');
}
/// 更新Marker的数据
Future<void> updateMarkers(MarkerUpdates markerUpdates,
{required int mapId}) {
throw UnimplementedError('updateMarkers() has not been implemented.');
}
/// 更新polyline的数据
Future<void> updatePolylines(PolylineUpdates polylineUpdates,
{required int mapId}) {
throw UnimplementedError('updatePolylines() has not been implemented.');
}
/// 更新polygon的数据
Future<void> updatePolygons(PolygonUpdates polygonUpdates,
{required int mapId}) {
throw UnimplementedError('updatePolygons() has not been implemented.');
}
/// 移动镜头到一个新的位置
Future<void> moveCamera(
CameraUpdate cameraUpdate, {
required int mapId,
bool animated = true,
int duration = 0,
}) {
throw UnimplementedError('moveCamera() has not been implemented.');
}
/// 展示marker InfoWindow
Future<void> showInfoWindow(String markerId, {required int mapId}) {
throw UnimplementedError('showInfoWindow() has not been implemented.');
}
/// 隐藏marker InfoWindow
Future<void> hideInfoWindow({required int mapId}) {
throw UnimplementedError('hideInfoWindow() has not been implemented.');
}
/// 设置地图每秒渲染的帧数
Future<void> setRenderFps(int fps, {required int mapId}) {
throw UnimplementedError('setRenderFps() has not been implemented.');
}
/// 截屏
Future<Uint8List?> takeSnapshot({required int mapId}) {
throw UnimplementedError('takeSnapshot() has not been implemented.');
}
///判断 点坐标是否在polygon 多边形内
///@param point 点坐标
Future<bool?> containsPoint(LatLng point, String id, {required int mapId}) {
throw UnimplementedError('takeSnapshot() has not been implemented.');
}
/// 地图可视区域
Future<dynamic> getVisibleRegion({required int mapId}) {
throw UnimplementedError('getVisibleRegion() has not been implemented.');
}
/// 地图可视区域
Future<void> searchPoi(String query, int searchType,
{required int mapId, double latitude = 0.0, double longitude = 0.0}) {
throw UnimplementedError('searchPoi() has not been implemented.');
}
/// 地图搜索inputTip
Future<void> searchInput(String query, {required int mapId}) {
throw UnimplementedError('searchInput() has not been implemented.');
}
/// 地图搜索regeocode
Future<void> searchRegeocode(double latitude, double longitude,
{required int mapId}) {
throw UnimplementedError('searchRegeocode() has not been implemented.');
}
/// 获取地图审图号(普通地图)
Future<String?> getMapContentApprovalNumber({required int mapId}) {
throw UnimplementedError(
'getMapContentApprovalNumber() has not been implemented.');
}
/// 获取地图审图号(卫星地图)
Future<String?> getSatelliteImageApprovalNumber({required int mapId}) {
throw UnimplementedError(
'getSatelliteImageApprovalNumber() has not been implemented.');
}
/// 清空缓存
Future<void> clearDisk({required int mapId}) {
throw UnimplementedError('clearDisk() has not been implemented.');
}
///只用于测试
///用于与native的通信
MethodChannel channel(int mapId) {
throw UnimplementedError('channel() has not been implemented.');
}
} }
import 'dart:async'; import 'dart:async';
import 'dart:html';
import 'dart:js_util';
import 'dart:typed_data';
import 'package:amap_flutter_base/amap_flutter_base.dart'; import 'package:amap_flutter_base/amap_flutter_base.dart';
import 'package:amap_flutter_map/src/core/amap_flutter_platform.dart'; import 'package:amap_flutter_map/src/core/amap_flutter_platform.dart';
import 'package:amap_flutter_map/src/types/input_tips_result.dart';
import 'package:amap_flutter_map/src/types/poi_result.dart';
import 'package:amap_flutter_map/src/types/regeocode_result.dart';
import 'package:amap_flutter_map/src/types/types.dart'; import 'package:amap_flutter_map/src/types/types.dart';
import 'package:amap_flutter_map/src/utils/platform_utils.dart';
import 'package:amap_flutter_map/src/web/amap.dart';
import 'package:amap_flutter_map/src/web/amap_loader.dart';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart'; import 'package:flutter/gestures.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:stream_transform/stream_transform.dart'; import 'package:stream_transform/stream_transform.dart';
import 'dart:ui' as ui;
import 'map_event.dart'; import 'map_event.dart';
...@@ -28,6 +17,9 @@ const VIEW_TYPE = 'com.amap.flutter.map'; ...@@ -28,6 +17,9 @@ const VIEW_TYPE = 'com.amap.flutter.map';
class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
final Map<int, MethodChannel> _channels = {}; final Map<int, MethodChannel> _channels = {};
///只用于测试
///用于与native的通信
@override
MethodChannel channel(int mapId) { MethodChannel channel(int mapId) {
return _channels[mapId]!; return _channels[mapId]!;
} }
...@@ -44,6 +36,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -44,6 +36,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
///更新地图参数 ///更新地图参数
@override
Future<void> updateMapOptions( Future<void> updateMapOptions(
Map<String, dynamic> newOptions, { Map<String, dynamic> newOptions, {
required int mapId, required int mapId,
...@@ -57,6 +50,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -57,6 +50,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
/// 更新Marker的数据 /// 更新Marker的数据
@override
Future<void> updateMarkers( Future<void> updateMarkers(
MarkerUpdates markerUpdates, { MarkerUpdates markerUpdates, {
required int mapId, required int mapId,
...@@ -68,6 +62,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -68,6 +62,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
/// 更新polyline的数据 /// 更新polyline的数据
@override
Future<void> updatePolylines( Future<void> updatePolylines(
PolylineUpdates polylineUpdates, { PolylineUpdates polylineUpdates, {
required int mapId, required int mapId,
...@@ -79,6 +74,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -79,6 +74,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
/// 更新polygon的数据 /// 更新polygon的数据
@override
Future<void> updatePolygons( Future<void> updatePolygons(
PolygonUpdates polygonUpdates, { PolygonUpdates polygonUpdates, {
required int mapId, required int mapId,
...@@ -91,6 +87,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -91,6 +87,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
///判断 点坐标是否在polygon 多边形内 ///判断 点坐标是否在polygon 多边形内
///@param point 点坐标 ///@param point 点坐标
@override
Future<bool?> containsPoint(LatLng point, String id, {required int mapId}) { Future<bool?> containsPoint(LatLng point, String id, {required int mapId}) {
return channel(mapId).invokeMethod<bool>( return channel(mapId).invokeMethod<bool>(
'polygon#containsPoint', 'polygon#containsPoint',
...@@ -127,46 +124,6 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -127,46 +124,6 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
creationParams: creationParams, creationParams: creationParams,
creationParamsCodec: const StandardMessageCodec(), creationParamsCodec: const StandardMessageCodec(),
); );
} else if (PlatformUtils.isWeb) {
late DivElement _element;
/// 这里使用时间作为唯一标识
String _divId = DateTime.now().toIso8601String();
/// 先创建div并注册
// ignore: undefined_prefixed_name
ui.platformViewRegistry.registerViewFactory(_divId, (int viewId) {
/// 地图需要的Div
_element = DivElement()
..style.width = '100%'
..style.height = '100%'
..style.margin = '0';
return _element;
});
SchedulerBinding.instance.addPostFrameCallback((_) {
/// 创建地图
var promise = load(LoaderOptions(
key: 'f759e608583c169bb23d7817ed05583d',
version: '2.0',
plugins: ['AMap.Scale'],
));
promiseToFuture(promise).then((value) {
print('初始化成功');
MapOptions _mapOptions = MapOptions(
zoom: 13,
);
AMap aMap = AMap(_element, _mapOptions);
}, onError: (e) {
print('初始化错误:$e');
});
});
return HtmlElementView(
viewType: _divId,
onPlatformViewCreated: onPlatformViewCreated,
);
} }
return Text('当前平台:$defaultTargetPlatform, 不支持使用高德地图插件'); return Text('当前平台:$defaultTargetPlatform, 不支持使用高德地图插件');
} }
...@@ -179,56 +136,74 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -179,56 +136,74 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
Stream<MapEvent> _events(int mapId) => Stream<MapEvent> _events(int mapId) =>
_mapEventStreamController.stream.where((event) => event.mapId == mapId); _mapEventStreamController.stream.where((event) => event.mapId == mapId);
//定位回调 ///定位回调
@override
Stream<LocationChangedEvent> onLocationChanged({required int mapId}) { Stream<LocationChangedEvent> onLocationChanged({required int mapId}) {
return _events(mapId).whereType<LocationChangedEvent>(); return _events(mapId).whereType<LocationChangedEvent>();
} }
//Camera 移动回调 /// Camera 移动回调
@override
Stream<CameraPositionMoveEvent> onCameraMove({required int mapId}) { Stream<CameraPositionMoveEvent> onCameraMove({required int mapId}) {
return _events(mapId).whereType<CameraPositionMoveEvent>(); return _events(mapId).whereType<CameraPositionMoveEvent>();
} }
///Camera 移动结束回调 ///Camera 移动结束回调
@override
Stream<CameraPositionMoveEndEvent> onCameraMoveEnd({required int mapId}) { Stream<CameraPositionMoveEndEvent> onCameraMoveEnd({required int mapId}) {
return _events(mapId).whereType<CameraPositionMoveEndEvent>(); return _events(mapId).whereType<CameraPositionMoveEndEvent>();
} }
///Camera 搜索POI回调 ///Camera 搜索POI回调
@override
Stream<MapSearchPOIEvent> mapSearchPOI({required int mapId}) { Stream<MapSearchPOIEvent> mapSearchPOI({required int mapId}) {
return _events(mapId).whereType<MapSearchPOIEvent>(); return _events(mapId).whereType<MapSearchPOIEvent>();
} }
///Camera 搜索inputtips回调 ///Camera 搜索inputtips回调
@override
Stream<MapSearchInputTipsEvent> mapSearchInputTips({required int mapId}) { Stream<MapSearchInputTipsEvent> mapSearchInputTips({required int mapId}) {
return _events(mapId).whereType<MapSearchInputTipsEvent>(); return _events(mapId).whereType<MapSearchInputTipsEvent>();
} }
///Camera 搜索regeocode回调 ///Camera 搜索regeocode回调
@override
Stream<MapSearchRegeocodeEvent> mapSearchRegeocode({required int mapId}) { Stream<MapSearchRegeocodeEvent> mapSearchRegeocode({required int mapId}) {
return _events(mapId).whereType<MapSearchRegeocodeEvent>(); return _events(mapId).whereType<MapSearchRegeocodeEvent>();
} }
/// 地图点击回调
@override
Stream<MapTapEvent> onMapTap({required int mapId}) { Stream<MapTapEvent> onMapTap({required int mapId}) {
return _events(mapId).whereType<MapTapEvent>(); return _events(mapId).whereType<MapTapEvent>();
} }
/// 地图长按回调
@override
Stream<MapLongPressEvent> onMapLongPress({required int mapId}) { Stream<MapLongPressEvent> onMapLongPress({required int mapId}) {
return _events(mapId).whereType<MapLongPressEvent>(); return _events(mapId).whereType<MapLongPressEvent>();
} }
/// poi点击回调
@override
Stream<MapPoiTouchEvent> onPoiTouched({required int mapId}) { Stream<MapPoiTouchEvent> onPoiTouched({required int mapId}) {
return _events(mapId).whereType<MapPoiTouchEvent>(); return _events(mapId).whereType<MapPoiTouchEvent>();
} }
/// marker点击回调
@override
Stream<MarkerTapEvent> onMarkerTap({required int mapId}) { Stream<MarkerTapEvent> onMarkerTap({required int mapId}) {
return _events(mapId).whereType<MarkerTapEvent>(); return _events(mapId).whereType<MarkerTapEvent>();
} }
/// marker拖拽回调
@override
Stream<MarkerDragEndEvent> onMarkerDragEnd({required int mapId}) { Stream<MarkerDragEndEvent> onMarkerDragEnd({required int mapId}) {
return _events(mapId).whereType<MarkerDragEndEvent>(); return _events(mapId).whereType<MarkerDragEndEvent>();
} }
/// polyline点击回调
@override
Stream<PolylineTapEvent> onPolylineTap({required int mapId}) { Stream<PolylineTapEvent> onPolylineTap({required int mapId}) {
return _events(mapId).whereType<PolylineTapEvent>(); return _events(mapId).whereType<PolylineTapEvent>();
} }
...@@ -327,6 +302,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -327,6 +302,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
///移动镜头到一个新的位置 ///移动镜头到一个新的位置
@override
Future<void> moveCamera( Future<void> moveCamera(
CameraUpdate cameraUpdate, { CameraUpdate cameraUpdate, {
required int mapId, required int mapId,
...@@ -341,6 +317,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -341,6 +317,7 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
/// 展示marker InfoWindow /// 展示marker InfoWindow
@override
Future<void> showInfoWindow(String markerId, {required int mapId}) { Future<void> showInfoWindow(String markerId, {required int mapId}) {
return channel(mapId) return channel(mapId)
.invokeMethod<void>('markers#showInfoWindow', <String, dynamic>{ .invokeMethod<void>('markers#showInfoWindow', <String, dynamic>{
...@@ -349,11 +326,13 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -349,11 +326,13 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
/// 隐藏marker InfoWindow /// 隐藏marker InfoWindow
@override
Future<void> hideInfoWindow({required int mapId}) { Future<void> hideInfoWindow({required int mapId}) {
return channel(mapId).invokeMethod<void>('markers#hideInfoWindow'); return channel(mapId).invokeMethod<void>('markers#hideInfoWindow');
} }
///设置地图每秒渲染的帧数 ///设置地图每秒渲染的帧数
@override
Future<void> setRenderFps(int fps, {required int mapId}) { Future<void> setRenderFps(int fps, {required int mapId}) {
return channel(mapId) return channel(mapId)
.invokeMethod<void>('map#setRenderFps', <String, dynamic>{ .invokeMethod<void>('map#setRenderFps', <String, dynamic>{
...@@ -362,18 +341,21 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -362,18 +341,21 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
} }
///截屏 ///截屏
@override
Future<Uint8List?> takeSnapshot({ Future<Uint8List?> takeSnapshot({
required int mapId, required int mapId,
}) { }) {
return channel(mapId).invokeMethod<Uint8List>('map#takeSnapshot'); return channel(mapId).invokeMethod<Uint8List>('map#takeSnapshot');
} }
// 地图可视区域 /// 地图可视区域
@override
Future<dynamic> getVisibleRegion({required int mapId}) { Future<dynamic> getVisibleRegion({required int mapId}) {
return channel(mapId).invokeMethod<dynamic>('map#visibleRegion'); return channel(mapId).invokeMethod<dynamic>('map#visibleRegion');
} }
// 地图可视区域 /// 地图可视区域
@override
Future<void> searchPoi(String query, int searchType, Future<void> searchPoi(String query, int searchType,
{required int mapId, double latitude = 0.0, double longitude = 0.0}) { {required int mapId, double latitude = 0.0, double longitude = 0.0}) {
return channel(mapId) return channel(mapId)
...@@ -385,7 +367,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -385,7 +367,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
}); });
} }
// 地图搜索inputTip /// 地图搜索inputTip
@override
Future<void> searchInput(String query, {required int mapId}) { Future<void> searchInput(String query, {required int mapId}) {
return channel(mapId) return channel(mapId)
.invokeMethod<dynamic>('camera#searchInput', <String, dynamic>{ .invokeMethod<dynamic>('camera#searchInput', <String, dynamic>{
...@@ -393,7 +376,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -393,7 +376,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
}); });
} }
// 地图搜索regeocode /// 地图搜索regeocode
@override
Future<void> searchRegeocode(double latitude, double longitude, Future<void> searchRegeocode(double latitude, double longitude,
{required int mapId}) { {required int mapId}) {
return channel(mapId) return channel(mapId)
...@@ -403,14 +387,16 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -403,14 +387,16 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
}); });
} }
//获取地图审图号(普通地图) /// 获取地图审图号(普通地图)
@override
Future<String?> getMapContentApprovalNumber({ Future<String?> getMapContentApprovalNumber({
required int mapId, required int mapId,
}) { }) {
return channel(mapId).invokeMethod<String>('map#contentApprovalNumber'); return channel(mapId).invokeMethod<String>('map#contentApprovalNumber');
} }
//获取地图审图号(卫星地图) /// 获取地图审图号(卫星地图)
@override
Future<String?> getSatelliteImageApprovalNumber({ Future<String?> getSatelliteImageApprovalNumber({
required int mapId, required int mapId,
}) { }) {
...@@ -418,6 +404,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform { ...@@ -418,6 +404,8 @@ class MethodChannelAMapFlutterMap implements AMapFlutterPlatform {
.invokeMethod<String>('map#satelliteImageApprovalNumber'); .invokeMethod<String>('map#satelliteImageApprovalNumber');
} }
/// 清空缓存
@override
Future<void> clearDisk({ Future<void> clearDisk({
required int mapId, required int mapId,
}) { }) {
......
import 'package:amap_flutter_map/src/core/amap_flutter_platform.dart';
/**
* web地图
*/
class AmapFlutterMapWeb extends AMapFlutterPlatform {
AmapFlutterMapWeb();
static void registerViewFactory() {
AMapFlutterPlatform.instance = AmapFlutterMapWeb();
}
}
\ No newline at end of file
@JS()
library stringify;
import 'package:js/js.dart';
// Calls invoke JavaScript `JSON.stringify(obj)`.
@JS('JSON.stringify')
external String stringify(Object obj);
@JS('console.log')
external String consoleLog(Object obj);
\ No newline at end of file
...@@ -10,6 +10,8 @@ environment: ...@@ -10,6 +10,8 @@ environment:
dependencies: dependencies:
flutter: flutter:
sdk: flutter sdk: flutter
flutter_web_plugins:
sdk: flutter
flutter_plugin_android_lifecycle: ^2.0.1 flutter_plugin_android_lifecycle: ^2.0.1
meta: ^1.3.0 meta: ^1.3.0
plugin_platform_interface: ^2.0.0 plugin_platform_interface: ^2.0.0
...@@ -25,7 +27,7 @@ dev_dependencies: ...@@ -25,7 +27,7 @@ dev_dependencies:
# https://github.com/dart-lang/pub/issues/2101 is resolved. # https://github.com/dart-lang/pub/issues/2101 is resolved.
flutter_driver: flutter_driver:
sdk: flutter sdk: flutter
# test: ^1.16.5 # test: ^1.16.5
pedantic: ^1.11.0 pedantic: ^1.11.0
mockito: ^5.0.0-nullsafety.7 mockito: ^5.0.0-nullsafety.7
...@@ -45,6 +47,9 @@ flutter: ...@@ -45,6 +47,9 @@ flutter:
pluginClass: AMapFlutterMapPlugin pluginClass: AMapFlutterMapPlugin
ios: ios:
pluginClass: AMapFlutterMapPlugin pluginClass: AMapFlutterMapPlugin
web:
pluginClass: AmapFlutterMapWeb
fileName: amap_flutter_map_web.dart
# To add assets to your plugin package, add an assets section, like this: # To add assets to your plugin package, add an assets section, like this:
assets: assets:
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论