Flutter教程高德地图集成
在Flutter中集成高德地图时遇到以下问题:按照官方文档添加了依赖和配置,但地图始终无法显示,控制台也没有报错信息。具体操作步骤是:
- 在pubspec.yaml添加了amap_flutter_map和amap_flutter_location插件最新版本;
- 在AndroidManifest.xml配置了API_KEY;
- 使用AMapWidget初始化地图。请问可能是什么原因导致地图不显示?是否需要额外检查网络权限或其他隐藏配置?iOS和Android平台的集成方式是否有差异?
3 回复
首先在高德开放平台注册账号并创建应用,获取API Key。接着在Flutter项目中添加依赖flutter_map
和amap_map_fluttify
。
- 在pubspec.yaml里配置:
dependencies:
flutter_map: ^3.0.0
amap_map_fluttify: ^0.0.17
运行flutter pub get
安装。
- 创建高德地图服务实例,在main函数初始化:
import 'package:amap_map_fluttify/amap_map_fluttify.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
await AmapApi.init(apiKey: '你的高德API Key');
runApp(MyApp());
}
- 使用Flutter Map Widget展示地图:
import 'package:flutter/material.dart';
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('高德地图示例')),
body: FlutterMap(
options: MapOptions(
center: LatLng(39.90960, 116.39722),
zoom: 10.0,
),
layers: [
TileLayerOptions(
urlTemplate: 'https://webrd01.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=8&x={x}&y={y}&z={z}',
apiKey: '你的高德API Key',
),
],
),
),
);
}
}
- 根据需求调整样式、标注等高级功能。
更多关于Flutter教程高德地图集成的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
Flutter 集成高德地图教程
1. 添加依赖
首先,在 pubspec.yaml
文件中添加高德地图 Flutter 插件依赖:
dependencies:
amap_flutter_map: ^2.0.1
amap_flutter_location: ^2.0.1
2. 获取高德地图Key
- 前往高德开放平台注册开发者账号
- 创建应用,获取 iOS 和 Android 的 API Key
3. 平台配置
Android 配置
- 在
AndroidManifest.xml
中添加:
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="你的Android API Key"/>
- 在
android/app/build.gradle
的defaultConfig
中添加:
ndk {
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86_64'
}
iOS 配置
- 在
Info.plist
中添加:
<key>io.flutter.embedded_views_preview</key>
<true/>
<key>AMapApiKey</key>
<string>你的iOS API Key</string>
4. 基本使用代码
import 'package:amap_flutter_map/amap_flutter_map.dart';
import 'package:amap_flutter_base/amap_flutter_base.dart';
class MapPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
body: AMapWidget(
apiKey: AMapApiKey(
iosKey: '你的iOS Key',
androidKey: '你的Android Key',
),
onMapCreated: (controller) {
// 地图创建完成回调
},
initialCameraPosition: CameraPosition(
target: LatLng(39.90960, 116.397228), // 北京中心坐标
zoom: 15, // 缩放级别
),
),
);
}
}
5. 常用功能
添加标记
AMapWidget(
markers: Set<Marker>.of([
Marker(
position: LatLng(39.90960, 116.397228),
title: '标记标题',
snippet: '标记描述',
),
]),
)
定位功能
AMapFlutterLocation().updatePrivacyAgree(true);
AMapFlutterLocation().updatePrivacyShow(true);
需要获取定位权限,可以使用 permission_handler
插件。
以上是 Flutter 集成高德地图的基本步骤,你可以根据需要扩展更多功能。