本文档提供一个从零开始的完整示例,帮助你在 5 分钟内运行起一个带地图和 Marker 的 Flutter 应用。
TencentMapInitializer.setAgreePrivacy(true) 和 TencentMapInitializer.start()import 'package:flutter/material.dart';
import 'package:flutter_tencent_map/flutter_tencent_map.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
// 1. 隐私合规
await TencentMapInitializer.setAgreePrivacy(true);
await TencentMapInitializer.start();
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: const QuickStartPage(),
);
}
}
class QuickStartPage extends StatefulWidget {
const QuickStartPage({super.key});
@override
State<QuickStartPage> createState() => _QuickStartPageState();
}
class _QuickStartPageState extends State<QuickStartPage> {
TencentMapController? _controller;
Set<Marker> _markers = {};
void _addMarker() {
setState(() {
_markers = {
Marker(
id: 'm1',
position: const LatLng(39.9087, 116.3975), // 天安门
infoWindow: const InfoWindow(
title: '天安门',
snippet: '北京市东城区',
),
onTap: () {
ScaffoldMessenger.of(context).showSnackBar(
const SnackBar(content: Text('点击了 Marker')),
);
},
),
};
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('快速开始')),
body: Stack(
children: [
TencentMap(
initialCameraPosition: const CameraPosition(
target: LatLng(39.9087, 116.3975),
zoom: 12,
),
onMapCreated: (controller) {
_controller = controller;
},
onMapLoaded: () {
// 地图加载完成后自动添加 Marker
_addMarker();
},
markers: _markers,
),
Positioned(
right: 16,
bottom: 16,
child: FloatingActionButton(
onPressed: () {
_controller?.moveCamera(
CameraUpdate.zoomIn(),
animated: true,
);
},
child: const Icon(Icons.add),
),
),
],
),
);
}
}
flutter run
预期效果:
AndroidManifest.xml 中 <meta-data> 是否在 <application> 标签内apiKey 是否正确传入 TencentMap Widget 或通过原生 SDK 设置TencentMapInitializer.setAgreePrivacy(true) 和 TencentMapInitializer.start()INTERNET 权限cd ios && pod installpod 'QMapKit', '5.7.7'BitmapDescriptor.fromAsset 的资源路径是否正确pubspec.yaml 中声明
有帮助
没帮助