Flutter静态地图展示插件google_static_maps_controller的使用
Flutter静态地图展示插件google_static_maps_controller的使用
插件介绍
google_static_maps_controller
是一个为Flutter应用提供简单声明式访问Google静态地图服务的插件。通过这个插件,开发者可以轻松地在Flutter应用中集成和自定义静态地图。
功能特性
Feature | Status |
---|---|
Base Static map support | ✅ |
Zoom levels | ✅ |
Image sizes | ✅ |
Map types | ✅ |
Markers | ✅ |
Map styles | ✅ |
Paths | ✅ |
Encoded Polylines | ✅ |
Viewports | ✅ |
- ✅ - 已完成
- 🧪 - 实验性
- ⚙️ - 开发中
- ❌ - 未实现
快速开始
示例地图图片
源代码示例
import 'package:flutter/material.dart';
import 'package:google_static_maps_controller/google_static_maps_controller.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Google static map demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: const MyHomePage(),
);
}
}
final retroMapStyle = [
// 地图样式配置
];
class MyHomePage extends StatelessWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: StaticMap(
googleApiKey: "<REPLACE-WITH-GOOGLE-API-KEY>",
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
scaleToDevicePixelRatio: true,
zoom: 14,
visible: const [
GeocodedLocation.address('Santa Monica Pier'),
],
styles: retroMapStyle,
paths: <Path>[
const Path(
color: Colors.blue,
points: [
GeocodedLocation.address('Santa Monica Pier'),
Location(34.011395, -118.494961),
Location(34.011921, -118.493360),
Location(34.012471, -118.491884),
Location(34.012710, -118.489420),
Location(34.014294, -118.486595),
Location(34.016630, -118.482920),
Location(34.018899, -118.480087),
Location(34.021314, -118.477136),
Location(34.022769, -118.474901),
],
),
Path.circle(
center: const Location(34.005641, -118.490229),
color: Colors.green.withOpacity(0.8),
fillColor: Colors.green.withOpacity(0.4),
radius: 200, // meters
),
const Path(
encoded: true,
points: [
Location(34.016839, -118.488240),
Location(34.019498, -118.491439),
Location(34.024106, -118.485734),
Location(34.021486, -118.482682),
Location(34.016839, -118.488240),
],
fillColor: Colors.black45,
color: Colors.black,
)
],
markers: const <Marker>[
Marker(
color: Colors.amber,
label: "X",
locations: [
GeocodedLocation.address("Santa Monica Pier"),
GeocodedLocation.latLng(34.012849, -118.501478),
],
),
Marker.custom(
anchor: MarkerAnchor.center,
icon: "https://goo.gl/1oTJ9Y",
locations: [
Location(34.012343, -118.482998),
],
),
Marker(
locations: [
Location(34.006618, -118.500901),
],
color: Colors.cyan,
label: "W",
)
],
),
);
}
}
使用 StaticMapController
Widget build(BuildContext context) {
/// Declare static map controller
const _controller = StaticMapController(
googleApiKey: "<GOOGLE_API_KEY>",
width: 400,
height: 400,
zoom: 10,
center: Location(-3.1178833, -60.0029284),
);
/// Get map image provider from controller.
/// You can also get image url by accessing
/// `_controller.url` property.
ImageProvider image = _controller.image;
return Scaffold(
body: Center(
/// Display as a normal network image
child: Image(image: image),
),
);
}
注意事项
- API Key:请确保替换
<REPLACE-WITH-GOOGLE-API-KEY>
和<GOOGLE_API_KEY>
为你的Google Maps API密钥。 - 依赖项:在
pubspec.yaml
文件中添加google_static_maps_controller
依赖。
dependencies:
flutter:
sdk: flutter
google_static_maps_controller: ^latest_version
- 权限:确保在
AndroidManifest.xml
和Info.plist
中添加必要的网络权限。
总结
google_static_maps_controller
提供了丰富的功能来展示和自定义静态地图。通过上述代码示例,你可以快速上手并在Flutter应用中集成静态地图。希望这篇指南对你有所帮助!如果有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter静态地图展示插件google_static_maps_controller的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter静态地图展示插件google_static_maps_controller的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter应用中使用google_static_maps_controller
插件来展示静态地图的代码示例。这个插件允许你生成并展示Google静态地图的图像。
首先,确保你已经在pubspec.yaml
文件中添加了google_static_maps_controller
依赖:
dependencies:
flutter:
sdk: flutter
google_static_maps_controller: ^最新版本号 # 请替换为实际的最新版本号
然后,运行flutter pub get
来获取依赖。
接下来,你可以按照以下步骤在你的Flutter应用中展示静态地图:
- 导入必要的包
在你的Dart文件中(例如main.dart
),导入必要的包:
import 'package:flutter/material.dart';
import 'package:google_static_maps_controller/google_static_maps_controller.dart';
- 创建静态地图控制器
创建一个GoogleStaticMapsController
实例,并配置你的API密钥和地图参数。
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Static Map Example'),
),
body: Center(
child: GoogleStaticMapExample(),
),
),
);
}
}
class GoogleStaticMapExample extends StatefulWidget {
@override
_GoogleStaticMapExampleState createState() => _GoogleStaticMapExampleState();
}
class _GoogleStaticMapExampleState extends State<GoogleStaticMapExample> {
GoogleStaticMapsController? _controller;
@override
void initState() {
super.initState();
_controller = GoogleStaticMapsController(
apiKey: 'YOUR_GOOGLE_MAPS_API_KEY', // 替换为你的Google Maps API密钥
center: LatLng(37.7749, -122.4194), // 地图中心点坐标
zoom: 12, // 缩放级别
size: Size(600, 400), // 地图尺寸
mapType: MapType.roadmap, // 地图类型
);
}
@override
Widget build(BuildContext context) {
return _controller!.buildWidget(
onImageReady: (imageProvider) {
// 地图图像加载完成后回调
print('Map image is ready');
},
onError: (error) {
// 错误处理
print('Error loading map: $error');
},
);
}
@override
void dispose() {
_controller?.dispose();
super.dispose();
}
}
在这个示例中:
- 我们创建了一个
GoogleStaticMapsController
实例,并配置了API密钥、地图中心点、缩放级别、尺寸和地图类型。 - 在
build
方法中,我们使用_controller!.buildWidget
来生成并展示静态地图。 - 提供了
onImageReady
和onError
回调,分别处理地图图像加载完成和加载错误的情况。
请确保将YOUR_GOOGLE_MAPS_API_KEY
替换为你自己的Google Maps API密钥,并确保你的API密钥具有访问静态地图API的权限。
以上代码展示了如何使用google_static_maps_controller
插件在Flutter应用中展示静态地图。根据你的需求,你可以进一步自定义地图参数和回调处理。