Flutter谷歌地图URL解析插件google_maps_url_extractor的使用

发布于 1周前 作者 gougou168 来自 Flutter

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

1 回复

更多关于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...'),
            },
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们做了以下几步:

  1. pubspec.yaml文件中添加了google_maps_url_extractor依赖。
  2. MyHomePage类中定义了一个Google Maps的URL字符串。
  3. 使用GoogleMapsUrl.parse方法解析URL,并将结果存储在parsedUrl变量中。
  4. 在UI中显示原始URL和解析后的信息(如纬度、经度、查询参数和地点ID)。

请确保替换^latest_version为插件的实际最新版本号。运行这个应用,你将看到一个界面,展示原始URL和解析后的地理坐标等信息。

回到顶部