Flutter标签标记插件label_marker的使用
Flutter标签标记插件label_marker的使用
label_marker
是一个Flutter插件,用于创建和使用带有标签文本的Google Maps标记;这是最简单且最高效的方法。
Features
- 在Flutter应用程序中包含带文本的地图标记
- 自定义标签的背景颜色
- 自定义标签的字体样式
- 实现任何其他与普通标记相同的功能
Getting started
- 完成拥有Google Maps的基本设置。
- 创建一组普通的标记(Set<Marker>),并将其设置为Google Maps widget的markers参数。
- 导入此包;
label_marker
,并在想要添加标签标记时调用addLabelMarker()函数。 - 将一个LabelMarker widget传递给上述函数,通过提供所需的参数(即,标签、位置和markerId)来创建它。(见示例。)
- 记住要在addLabelMarker()函数后使用’then’关键字调用setState。
markers.addLabelMarker(LabelMarker(
label: "TextToShow",
markerId: MarkerId("idString"),
position: LatLng(10.0, 11.0),
backgroundColor: Colors.green,
)).then((value) {
setState(() {});
},
);
示例代码
以下是一个完整的示例demo,展示了如何在项目中使用label_marker
插件。
import 'dart:math';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:label_marker/label_marker.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Label Marker example',
home: MyHomePage(title: 'Label Marker Example'),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key, required this.title}) : super(key: key);
final String title;
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Set<Marker> markers = {};
GoogleMapController? controller;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: GoogleMap(
initialCameraPosition: const CameraPosition(
target: LatLng(0, 0),
zoom: 1,
),
markers: markers,
onMapCreated: ((mapController) {
setState(() {
controller = mapController;
});
}),
),
floatingActionButton: FloatingActionButton(
child: const Icon(Icons.add),
onPressed: (() {
final lat = (Random().nextDouble() * 180) - 90;
final lng = (Random().nextDouble() * 360) - 180;
final title = "title${Random().nextInt(1000)}";
markers
.addLabelMarker(LabelMarker(
label: title,
markerId: MarkerId(title),
position: LatLng(lat, lng),
backgroundColor: Colors.green,
))
.then(
(value) {
setState(() {});
},
);
}),
),
);
}
}
这个示例创建了一个简单的Flutter应用,其中包含一个带有浮动操作按钮的Google地图。点击按钮会在随机位置添加一个带有标签的标记。
更多关于Flutter标签标记插件label_marker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter标签标记插件label_marker的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是如何在Flutter项目中使用label_marker
插件的一个基本示例。label_marker
插件允许你在地图上添加标签标记,这对于显示地点信息、导航指示等非常有用。
首先,确保你已经在pubspec.yaml
文件中添加了label_marker
插件的依赖:
dependencies:
flutter:
sdk: flutter
label_marker: ^最新版本号 # 替换为实际的最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目中,你可以按照以下步骤来使用label_marker
插件:
- 导入必要的包:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:label_marker/label_marker.dart';
-
设置Google Maps API密钥(确保你已经在Google Cloud Platform上设置了API密钥,并在
AndroidManifest.xml
和Info.plist
中进行了相应的配置)。 -
创建一个包含地图和标签标记的Widget:
class MapScreen extends StatefulWidget {
@override
_MapScreenState createState() => _MapScreenState();
}
class _MapScreenState extends State<MapScreen> {
late GoogleMapController _mapController;
late LatLng _center;
Set<Marker> _markers = Set<Marker>();
Set<LabelMarker> _labelMarkers = Set<LabelMarker>();
@override
void initState() {
super.initState();
_center = LatLng(-34, 151); // 默认中心位置
}
void _onMapCreated(GoogleMapController controller) {
_mapController = controller;
// 添加一个示例标签标记
_addLabelMarker();
}
void _addLabelMarker() {
setState(() {
_labelMarkers.add(
LabelMarker(
position: LatLng(-34, 151.05), // 标签位置
text: 'Hello, World!', // 标签文本
textStyle: TextStyle(color: Colors.red, fontSize: 16),
anchor: Offset(0.5, -1), // 锚点,相对于标签文本的位置
rotation: 0.0, // 旋转角度
backgroundColor: Colors.white,
padding: EdgeInsets.all(8.0),
borderRadius: 8.0,
borderWidth: 2.0,
borderColor: Colors.black,
zIndex: 1, // 标签层级
),
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Label Marker Example'),
),
body: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
markers: _markers,
onMapCreated: _onMapCreated,
labelMarkers: _labelMarkers, // 添加标签标记集合
),
floatingActionButton: FloatingActionButton(
onPressed: _addLabelMarker,
tooltip: 'Add Label Marker',
child: Icon(Icons.add),
),
);
}
}
- 在你的主应用文件中使用这个Widget:
import 'package:flutter/material.dart';
import 'map_screen.dart'; // 假设你将上面的代码放在map_screen.dart文件中
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MapScreen(),
);
}
}
这个示例展示了如何在Flutter中使用label_marker
插件在Google Maps上添加标签标记。你可以根据需要调整标签的样式、位置和其他属性。确保你已经正确配置了Google Maps API,并在运行应用时连接到互联网。