Flutter谷歌地图URL解析插件google_maps_url_extractor的使用
Flutter谷歌地图URL解析插件google_maps_url_extractor的使用
Google Maps URL Extractor 是一个用于从 Google 地图 URL 中提取坐标的 Dart 包,并支持扩展缩短的 URL。
特性
- 扩展缩短的 Google 地图 URL(例如,
goo.gl
链接) - 从 Google 地图 URL 中提取纬度和经度坐标
- 支持各种 Google 地图 URL 格式
- 异步处理 URL
安装
在您的 pubspec.yaml
文件中添加以下依赖项:
dependencies:
google_maps_url_extractor: ^1.0.1
或者运行以下命令:
flutter pub add google_maps_url_extractor
使用
1. 导入包
在您的 Dart/Flutter 代码中导入该包:
import 'package:google_maps_url_extractor/google_maps_url_extractor.dart';
2. 扩展缩短的 URL
使用 expandShortUrl
方法来扩展缩短的 URL:
final shortUrl = 'https://maps.app.goo.gl/mWtb4a1cUE9zMWya7';
final expandedUrl = await GoogleMapsUrlExtractor.expandShortUrl(shortUrl);
print('Expanded URL: $expandedUrl');
3. 提取坐标
使用 extractCoordinates
方法从 URL 中获取坐标:
final fullUrl = 'https://www.google.com/maps/@37.7749,-122.4194,15z';
final coordinates = GoogleMapsUrlExtractor.extractCoordinates(fullUrl);
if (coordinates != null) {
print('Latitude: ${coordinates['latitude']}');
print('Longitude: ${coordinates['longitude']}');
}
4. 处理 Google 地图 URL
使用 processGoogleMapsUrl
方法从 URL 中获取坐标:
final url = 'https://maps.app.goo.gl/mWtb4a1cUE9zMWya7';
final coordinates = await GoogleMapsUrlExtractor.processGoogleMapsUrl(url);
if (coordinates != null) {
print('Latitude: ${coordinates['latitude']}');
print('Longitude: ${coordinates['longitude']}');
}
支持的 URL 格式
此包支持多种 Google 地图 URL 格式,包括:
- 缩短的 URL(例如:
https://goo.gl/maps/abcdefg
) - 标准地图 URL(例如:
https://www.google.com/maps/@37.7749,-122.4194,15z
) - 地点 URL(例如:
https://www.google.com/maps/place/Eiffel+Tower/@48.8583701,2.2922926,17z
) - 搜索 URL(例如:
https://www.google.com/maps/search/?api=1&query=48.8583701,2.2922926
) - 方向 URL(例如:
https://www.google.com/maps/dir/?api=1&destination=48.8583701,2.2922926
)
错误处理
所有方法在输入 URL 无效或无法提取坐标时返回 null
。
示例 Demo
以下是一个完整的示例 Demo:
import 'package:google_maps_url_extractor/google_maps_url_extractor.dart';
void main() async {
// Example of expanding a short URL
const shortUrl = 'https://maps.app.goo.gl/mWtb4a1cUE9zMWya7';
final expandedUrl = await GoogleMapsUrlExtractor.expandShortUrl(shortUrl);
print('Expanded URL: $expandedUrl');
// Example of extracting coordinates from a full URL
const fullUrl =
'https://www.google.com/maps/place/Moonraft+Innovation+Labs/@12.9140057,77.6281936,17z/data=!3m1!4b1!4m6!3m5!1s0x3bae148db555a135:0xdf658e2653660ee6!8m2!3d12.9140057!4d77.6281936!16s%2Fg%2F1tg66jp9?entry=ttu&g_ep=EgoyMDI0MDkxMS4wIKXMDSoASAFQAw%3D%3D';
final coordinates = GoogleMapsUrlExtractor.extractCoordinates(fullUrl);
if (coordinates != null) {
print('Latitude: ${coordinates['latitude']}');
print('Longitude: ${coordinates['longitude']}');
} else {
print('Failed to extract coordinates');
}
// Example of processing a Google Maps URL
final processedCoordinates =
await GoogleMapsUrlExtractor.processGoogleMapsUrl(shortUrl);
if (processedCoordinates != null) {
print('Processed Latitude: ${processedCoordinates['latitude']}');
print('Processed Longitude: ${processedCoordinates['longitude']}');
} else {
print('Failed to process URL');
}
}
更多关于Flutter谷歌地图URL解析插件google_maps_url_extractor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter谷歌地图URL解析插件google_maps_url_extractor的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用google_maps_url_extractor
插件的示例代码。这个插件用于解析Google Maps的URL,并提取其中的地理坐标(经纬度)和其他信息。
首先,确保在你的pubspec.yaml
文件中添加了对google_maps_url_extractor
的依赖:
dependencies:
flutter:
sdk: flutter
google_maps_url_extractor: ^latest_version # 请替换为最新版本号
然后,运行flutter pub get
来安装依赖。
接下来,在你的Flutter项目的Dart文件中,你可以使用以下代码来解析Google Maps的URL:
import 'package:flutter/material.dart';
import 'package:google_maps_url_extractor/google_maps_url_extractor.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Google Maps URL Extractor Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final String googleMapsUrl =
'https://www.google.com/maps/place/1600+Amphitheatre+Parkway,+Mountain+View,+CA/@37.4219999,-122.0840572,17z/data=!3m1!4b1!4m5!3m4!1s0x808fb900bb9f76fb:0xccaa8976d7cd9032!8m2!3d37.4219999!4d-122.0818585';
GoogleMapsUrl? parsedUrl;
void _parseUrl() {
try {
parsedUrl = GoogleMapsUrl.parse(googleMapsUrl);
setState(() {});
} catch (e) {
print('Error parsing URL: $e');
}
}
@override
void initState() {
super.initState();
_parseUrl();
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Maps URL Extractor Demo'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('Original URL:'),
Text(googleMapsUrl),
SizedBox(height: 20),
if (parsedUrl != null) {
Text('Parsed Latitude: ${parsedUrl!.latitude}'),
Text('Parsed Longitude: ${parsedUrl!.longitude}'),
Text('Parsed Query: ${parsedUrl!.query}'),
Text('Parsed Place ID: ${parsedUrl!.placeId}'),
} else {
Text('Parsing in progress...'),
},
],
),
),
);
}
}
在这个示例中,我们做了以下几步:
- 在
pubspec.yaml
文件中添加了google_maps_url_extractor
依赖。 - 在
MyHomePage
类中定义了一个Google Maps的URL字符串。 - 使用
GoogleMapsUrl.parse
方法解析URL,并将结果存储在parsedUrl
变量中。 - 在UI中显示原始URL和解析后的信息(如纬度、经度、查询参数和地点ID)。
请确保替换^latest_version
为插件的实际最新版本号。运行这个应用,你将看到一个界面,展示原始URL和解析后的地理坐标等信息。