Flutter地图展示插件amap_flutter_map的使用
Flutter地图展示插件amap_flutter_map的使用
基于高德开放平台地图SDK的flutter插件。
使用方法
使用Flutter插件,请参考在Flutter里使用Packages,添加amap_flutter_map的引用。
准备工作
- 登录高德开放平台官网申请ApiKey。Android平台申请配置key请参考Android获取key, iOS平台申请配置请参考iOS获取key。
- 引入高德地图SDK,Android平台请参考Android Studio配置工程, iOS平台请参考ios安装地图SDK。
- iOS端插件使用特殊配置: Flutter 1.22.0 之前(之后的版本可以不添加该配置),iOS端的UiKitView还只是preview状态,默认是不支持的,需要手动打开开关,在iOS工程的info.plist添加如下配置:
<key>io.flutter.embedded_views_preview</key>
<string>YES</string>
使用示例
以下是一个简单的示例,展示了如何在Flutter应用中使用amap_flutter_map
插件来展示地图。
import 'package:amap_flutter_map_example/base_page.dart';
import 'package:flutter/material.dart';
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_base/amap_flutter_base.dart';
class ShowMapPage extends BasePage {
ShowMapPage(String title, String subTitle) : super(title, subTitle);
[@override](/user/override)
Widget build(BuildContext context) {
return _ShowMapPageBody();
}
}
class _ShowMapPageBody extends StatefulWidget {
[@override](/user/override)
State<StatefulWidget> createState() => _ShowMapPageState();
}
class _ShowMapPageState extends State<_ShowMapPageBody> {
static final CameraPosition _kInitialPosition = const CameraPosition(
target: LatLng(39.909187, 116.397451),
zoom: 10.0,
);
List<Widget> _approvalNumberWidget = List<Widget>();
[@override](/user/override)
Widget build(BuildContext context) {
final AMapWidget map = AMapWidget(
initialCameraPosition: _kInitialPosition,
onMapCreated: onMapCreated,
);
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),
))
],
),
);
}
AMapController _mapController;
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');
}
}
更多关于Flutter地图展示插件amap_flutter_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter地图展示插件amap_flutter_map的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个使用 amap_flutter_map
插件在 Flutter 应用中展示高德地图的示例代码。这个示例将展示如何初始化地图、设置地图的中心点以及添加一些基本的地图控件。
首先,确保你已经在 pubspec.yaml
文件中添加了 amap_flutter_map
依赖:
dependencies:
flutter:
sdk: flutter
amap_flutter_map: ^x.y.z # 请替换为最新版本号
然后,运行 flutter pub get
以获取依赖。
接下来,在你的 Flutter 应用中,你可以按照以下步骤使用 amap_flutter_map
:
-
初始化高德地图的 API Key:
在使用高德地图服务之前,你需要在高德开放平台申请一个 API Key。确保你已经获得了 API Key,并在你的 Flutter 应用中进行配置。
-
创建地图页面:
创建一个新的 Dart 文件(例如
map_page.dart
),并在其中编写以下代码:
import 'package:flutter/material.dart';
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_map/models/amap_options.dart';
import 'package:amap_flutter_map/models/camera_position.dart';
class MapPage extends StatefulWidget {
@override
_MapPageState createState() => _MapPageState();
}
class _MapPageState extends State<MapPage> {
final String apiKey = '你的高德地图API Key'; // 在这里替换为你的API Key
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('高德地图展示'),
),
body: AMapWidget(
apiKey: apiKey,
options: AMapOptions(
cameraPosition: CameraPosition(
target: LatLng(39.906901, 116.397972), // 北京天安门坐标
zoom: 14.0,
),
zoomControlsEnabled: true,
compassEnabled: true,
myLocationEnabled: true,
),
),
);
}
}
-
在主应用中引入地图页面:
在你的主应用 Dart 文件(例如
main.dart
)中,引入并展示MapPage
:
import 'package:flutter/material.dart';
import 'map_page.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter 高德地图示例',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MapPage(),
);
}
}
-
运行应用:
现在,你可以运行你的 Flutter 应用,应该会看到一个展示北京天安门附近区域的高德地图。
这个示例展示了如何使用 amap_flutter_map
插件在 Flutter 应用中集成和展示高德地图。你可以根据需要进一步自定义地图的样式和功能,例如添加标记、多边形、路线规划等。更多高级用法请参考 amap_flutter_map
的官方文档和示例。