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/web/amap.dart'; import 'src/web/amap_loader.dart'; import 'src/web/utils.dart'; /** * web地图 */ class AmapFlutterMapWeb extends AMapFlutterPlatform { AmapFlutterMapWeb(); late AMap _aMap; late DivElement _element; static void registerWith(Registrar registrar) { AMapFlutterPlatform.instance = AmapFlutterMapWeb(); } @override Widget buildView( Map<String, dynamic> creationParams, Set<Factory<OneSequenceGestureRecognizer>> gestureRecognizers, PlatformViewCreatedCallback onPlatformViewCreated) { /// 这里使用时间作为唯一标识 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(_element, _mapOptions); }, onError: (e) { print('初始化错误:$e'); }); }); return HtmlElementView( viewType: _divId, onPlatformViewCreated: onPlatformViewCreated, ); } /// 导航 void navDriving() { _aMap.plugin(["AMap.Driving"], allowInterop(() { var driving = Driving(DrivingOptions(map: _aMap, panel: _element)); driving .search(LngLat(116.379028, 39.865042), LngLat(116.427281, 39.903719), allowInterop((status, result) { print("=====11111 status $status result = ${stringify(result)}"); })); })); } }