Flutter地图展示插件carillon_map_box的使用
Flutter地图展示插件carillon_map_box的使用
carillon_map_box
carillon_map_box
是一个用于在 Flutter 应用中展示地图的插件。
获取开始
这个项目是一个 Flutter 插件包的起点,这类插件包包含针对 Android 和/或 iOS 的平台特定实现代码。
如果你需要开始使用 Flutter,请查看我们的在线文档,其中提供了教程、示例、移动开发指南以及完整的 API 参考。
使用示例
以下是一个完整的示例代码,展示了如何在 Flutter 应用中使用 carillon_map_box
插件。
示例代码
import 'package:flutter/material.dart';
import 'dart:async';
import 'package:flutter/services.dart';
import 'package:carillon_map_box/carillon_map_box.dart';
import 'package:carillon_map_box/models.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
[@override](/user/override)
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
[@override](/user/override)
void initState() {
super.initState();
}
[@override](/user/override)
Widget build(BuildContext context) {
// 地图配置选项
Map<String, dynamic> options = {
"mapStyleUrl": "mapbox://styles/carillon/ckwroj8nx14d815nvidt3jwea",
// DAY -> mapbox://styles/carillon/ckwroj8nx14d815nvidt3jwea
// NIGHT -> mapbox://styles/carillon/ckwrokzci2fh214mk66vm3tai
"simulateRoute": true,
"points": [
CarillonLocation(
id: 0, address: "plaisir", latitude: 48.824810, longitude: 1.965922)
.toJson(),
CarillonLocation(
id: 1, address: "clamart", latitude: 48.8, longitude: 2.25)
.toJson()
]
};
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('CarillonMapBox Example (convenient)'),
),
body: Center(
child: CarillonMapBox(
onCarillonMapBoxCreated: _onCarillonMapBoxCreated,
options: options),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
// 启动导航
CarillonMapBox.startNavigation(options, () {
print("Start CALLBACK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
}, () {
print("End CALLBACK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
});
// 延迟 10 秒后发送警报
Future.delayed(const Duration(seconds: 10), () {
CarillonMapBox.sendAlert(() {
print("popup button CALLBACK !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
});
});
},
),
),
);
}
void _onCarillonMapBoxCreated(CarillonMapBoxController controller) {}
}
更多关于Flutter地图展示插件carillon_map_box的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
carillon_map_box
是一个用于在 Flutter 应用中展示地图的插件,它基于 Mapbox 地图服务。使用这个插件,你可以在应用中集成 Mapbox 地图,并自定义地图的样式、标记、交互等。
以下是如何在 Flutter 项目中使用 carillon_map_box
插件的步骤:
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 carillon_map_box
插件的依赖:
dependencies:
flutter:
sdk: flutter
carillon_map_box: ^1.0.0 # 请使用最新版本
然后运行 flutter pub get
来安装依赖。
2. 获取 Mapbox Access Token
在使用 Mapbox 地图之前,你需要一个 Mapbox Access Token。你可以在 Mapbox 官网 注册并获取 Access Token。
3. 初始化地图
在你的 Flutter 应用中初始化地图。通常,你可以在 main.dart
文件中设置 Mapbox Access Token:
import 'package:flutter/material.dart';
import 'package:carillon_map_box/carillon_map_box.dart';
void main() {
CarillonMapBox.init('YOUR_MAPBOX_ACCESS_TOKEN');
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MapScreen(),
);
}
}
4. 展示地图
在 MapScreen
中,你可以使用 CarillonMapBox
组件来展示地图:
import 'package:flutter/material.dart';
import 'package:carillon_map_box/carillon_map_box.dart';
class MapScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Mapbox Map'),
),
body: CarillonMapBox(
styleUrl: 'mapbox://styles/mapbox/streets-v11', // 地图样式
initialCameraPosition: CameraPosition(
target: LatLng(37.7749, -122.4194), // 初始地图中心位置 (旧金山)
zoom: 12.0, // 初始缩放级别
),
onMapCreated: (controller) {
// 地图创建完成后的回调
// 你可以在这里使用 controller 来操作地图
},
),
);
}
}
5. 自定义地图
你可以通过 CarillonMapBox
组件的参数来自定义地图的样式、标记、交互等。例如,添加一个标记:
CarillonMapBox(
styleUrl: 'mapbox://styles/mapbox/streets-v11',
initialCameraPosition: CameraPosition(
target: LatLng(37.7749, -122.4194),
zoom: 12.0,
),
onMapCreated: (controller) {
// 添加标记
controller.addMarker(
MarkerOptions(
position: LatLng(37.7749, -122.4194),
icon: 'assets/marker.png', // 标记图标
title: 'San Francisco', // 标记标题
),
);
},
)
6. 处理地图事件
你可以监听地图的各种事件,例如用户点击地图、移动地图等:
CarillonMapBox(
styleUrl: 'mapbox://styles/mapbox/streets-v11',
initialCameraPosition: CameraPosition(
target: LatLng(37.7749, -122.4194),
zoom: 12.0,
),
onMapCreated: (controller) {
// 监听地图点击事件
controller.onMapClick.listen((event) {
print('Map clicked at: ${event.latLng}');
});
},
)