Flutter地图链接跳转插件maplink的使用
Flutter地图链接跳转插件maplink的使用
Maplink Package
项目用于连接Maplink(SOAP)
在pubspec.yaml
文件中添加依赖:
dependencies:
maplink: <last version>
使用示例
通过邮政编码和门牌号获取地址
final maplink = Maplink("your-token");
final response = await maplink.getAddressByZipcodeAndHouseNumber(
"03118030", // 邮政编码
"156", // 门牌号(可选)
);
通过街道名称获取地址
final maplink = Maplink("your-token");
final response = await maplink.getAddressByStreetName(
state: "SP",
city: "São Paulo",
country: "BRA", // ISO 3166-1 alpha-3 国家代码(BRA)
streetName: "Rua Guaimbé",
houseNumber: "156", // 门牌号(可选)
);
错误处理
所有错误都继承自Failure
类,该类有三个主要属性:
code
: 用于标识错误的代码;message
: 错误的标准消息;innerException
: 导致错误的异常。
处理的错误
参数验证
代码 | 错误 | 消息 | 描述 |
---|---|---|---|
null-token-failure | NullTokenFailure | 需要填写token以继续。 | Token为空 |
empty-token-failure | EmptyTokenFailure | 需要填写token以继续。 | Token为空 |
invalid-field-${fieldName}-failure | InvalidFieldFailure | 需要填写字段${fieldName}以继续。 | 传入的某个参数为空或为null |
处理Maplink返回结果
代码 | 错误 | 消息 | 描述 |
---|---|---|---|
empty-datasource-response | EmptyDatasourceResponseFailure | 地址未找到 | Maplink未找到任何地址 |
null-datasource-response | NullDatasourceResponseFailure | null | Maplink未在响应体中返回内容 |
maplink-error-messages-failure | ErrorsMaplinkFailure | 错误信息的拼接,用\n分隔 | 由Maplink处理的错误。包含一个ErrorsMaplinkMessage 列表,每个项具有code 和message 属性 |
完整示例Demo
下面是一个完整的示例代码,展示了如何使用Maplink插件进行地址查询,并处理可能出现的错误。
import 'package:flutter/material.dart';
import 'package:maplink/maplink.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text('Maplink Demo')),
body: Center(
child: MaplinkDemo(),
),
),
);
}
}
class MaplinkDemo extends StatefulWidget {
[@override](/user/override)
_MaplinkDemoState createState() => _MaplinkDemoState();
}
class _MaplinkDemoState extends State<MaplinkDemo> {
String _response = '';
final Maplink _maplink = Maplink("your-token");
Future<void> _fetchAddressByZipcodeAndHouseNumber() async {
try {
final response = await _maplink.getAddressByZipcodeAndHouseNumber(
"03118030", // 邮政编码
"156", // 门牌号(可选)
);
setState(() {
_response = '成功获取地址: ${response}';
});
} catch (e) {
setState(() {
_response = '获取地址失败: ${e.message}';
});
}
}
Future<void> _fetchAddressByStreetName() async {
try {
final response = await _maplink.getAddressByStreetName(
state: "SP",
city: "São Paulo",
country: "BRA", // ISO 3166-1 alpha-3 国家代码(BRA)
streetName: "Rua Guaimbé",
houseNumber: "156", // 门牌号(可选)
);
setState(() {
_response = '成功获取地址: ${response}';
});
} catch (e) {
setState(() {
_response = '获取地址失败: ${e.message}';
});
}
}
[@override](/user/override)
Widget build(BuildContext context) {
return Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: _fetchAddressByZipcodeAndHouseNumber,
child: Text('通过邮政编码和门牌号获取地址'),
),
SizedBox(height: 20),
ElevatedButton(
onPressed: _fetchAddressByStreetName,
child: Text('通过街道名称获取地址'),
),
SizedBox(height: 20),
Text(_response),
],
);
}
}
更多关于Flutter地图链接跳转插件maplink的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复
更多关于Flutter地图链接跳转插件maplink的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
在Flutter中,maplink
是一个用于生成地图链接并跳转到地图应用的插件。它支持多种地图应用,如 Google Maps、Apple Maps、Waze 等。通过 maplink
,你可以轻松地在 Flutter 应用中生成地图链接,并跳转到用户设备上安装的地图应用。
安装 maplink
插件
首先,你需要在 pubspec.yaml
文件中添加 maplink
依赖:
dependencies:
flutter:
sdk: flutter
maplink: ^1.0.0
然后运行 flutter pub get
来安装依赖。
使用 maplink
插件
1. 导入 maplink
包
import 'package:maplink/maplink.dart';
2. 生成地图链接并跳转
你可以使用 MapLink
类来生成地图链接并跳转到地图应用。以下是一个简单的示例:
void openMap(double latitude, double longitude, String label) async {
final mapLink = MapLink(
latitude: latitude,
longitude: longitude,
label: label,
);
// 跳转到地图应用
await mapLink.launchMaps();
}
3. 调用 openMap
函数
你可以在按钮的 onPressed
事件中调用 openMap
函数,传入经纬度和标签:
ElevatedButton(
onPressed: () {
openMap(37.7749, -122.4194, 'San Francisco');
},
child: Text('Open Map'),
);
支持的参数
MapLink
构造函数支持以下参数:
latitude
: 目标位置的纬度。longitude
: 目标位置的经度。label
: 目标位置的标签(可选)。zoom
: 地图的缩放级别(可选)。mapType
: 地图类型,支持MapType.normal
、MapType.satellite
、MapType.terrain
等(可选)。directionsMode
: 导航模式,支持DirectionsMode.driving
、DirectionsMode.walking
、DirectionsMode.transit
等(可选)。
示例代码
以下是一个完整的示例代码:
import 'package:flutter/material.dart';
import 'package:maplink/maplink.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('MapLink Example'),
),
body: Center(
child: ElevatedButton(
onPressed: () {
openMap(37.7749, -122.4194, 'San Francisco');
},
child: Text('Open Map'),
),
),
),
);
}
void openMap(double latitude, double longitude, String label) async {
final mapLink = MapLink(
latitude: latitude,
longitude: longitude,
label: label,
);
// 跳转到地图应用
await mapLink.launchMaps();
}
}