📅  最后修改于: 2023-12-03 15:15:09.054000             🧑  作者: Mango
Flutter Map是一个基于Flutter开发的地图插件,可以方便地在移动应用程序中添加地图功能。其中的标记功能可以让程序员在地图上添加自定义的标记,并且可以实现与标记相关的交互操作。
在pubspec.yaml
文件中添加以下依赖:
dependencies:
flutter_map: ^0.12.0
首先需要在Scaffold
中添加一个FlutterMap
Widget作为地图容器。在这个Widget中设置地图的中心坐标和缩放级别,也可以添加其他相关设置。例如:
import 'package:flutter_map/flutter_map.dart';
import 'package:latlong/latlong.dart';
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Map Example"),
),
body: FlutterMap(
options: MapOptions(
center: LatLng(51.5, -0.09),
zoom: 13.0,
),
layers: [
TileLayerOptions(
urlTemplate: "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}",
additionalOptions: {
'accessToken': '<PUT_ACCESS_TOKEN_HERE>',
'id': 'mapbox/streets-v11',
},
),
],
),
);
}
}
使用MarkerLayerOptions
在地图上添加标记,可以指定标记的坐标、图标、大小、角度等属性。可以在onTap
回调函数中添加标记,并在child
中定制标记的样式。例如:
class MyApp extends StatelessWidget {
var markers = <Marker>[];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Map Example"),
),
body: FlutterMap(
options: MapOptions(
center: LatLng(51.5, -0.09),
zoom: 13.0,
),
layers: [
TileLayerOptions(
urlTemplate: "https://api.mapbox.com/styles/v1/{id}/tiles/{z}/{x}/{y}?access_token={accessToken}",
additionalOptions: {
'accessToken': '<PUT_ACCESS_TOKEN_HERE>',
'id': 'mapbox/streets-v11',
},
),
MarkerLayerOptions(
markers: markers,
onTap: (point) => setState(() {
markers.add(
Marker(
width: 40.0,
height: 40.0,
point: point.latlng,
builder: (ctx) => Container(
child: Icon(Icons.location_on),
),
),
);
}),
),
],
),
);
}
}
Flutter Map标记功能可以让程序员方便地在地图上添加自定义的标记,并且可以实现与标记相关的交互操作。使用时需要引入flutter_map
插件,并且采用MarkerLayerOptions
在地图上添加标记。可以通过onTap
回调函数实现点击地图添加标记的交互效果。