Flutter地理距离计算插件haversine的使用

Flutter地理距离计算插件haversine的使用

在Flutter开发中,如果您需要计算两个地理位置之间的距离,可以使用haversine插件。该插件基于哈弗赛因公式(Haversine Formula),用于计算地球上两点之间的大圆距离。

插件简介

haversine.dart 是一个简单的实现,用于根据经纬度对地球上的地理距离进行计算。哈弗赛因公式是一种用于确定球面上两点间最短距离的方法。

哈弗赛因公式:用于计算球面上两点间的最短距离,给定这两点的经度和纬度。

此库假定地球是一个球体,这在大多数情况下已经足够精确。不过需要注意的是,地球并不是完全规则的球体,因此该方法可能会有一定的误差。

免责声明:由于地球并非完美的球体,基于球形几何的假设可能引入显著的误差,因此请勿将此值用于涉及生命安全的用途

更多详细信息可参考 GIS StackExchange


使用示例

以下是一个完整的示例代码,展示如何在Flutter项目中使用haversine插件来计算两个地点之间的距离。

1. 添加依赖

首先,在您的 pubspec.yaml 文件中添加 haversine 依赖:

dependencies:
  haversine: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 示例代码

以下代码展示了如何使用 haversine 插件计算两个地点之间的距离。

// Copyright (c) 2017, yeradis. All rights reserved. Use of this source code
// is governed by a BSD-style license that can be found in the LICENSE file.

import 'package:haversine/haversine.dart'; // 导入 haversine 库

void main() {
  // 定义两个地点的经纬度
  final lat1 = 41.139129; // 第一个地点的纬度
  final lon1 = 1.402244;  // 第一个地点的经度

  final lat2 = 41.139074; // 第二个地点的纬度
  final lon2 = 1.402315;  // 第二个地点的经度

  // 创建 Haversine 实例并计算距离
  final haversine = new Haversine.fromDegrees(
    latitude1: lat1,
    longitude1: lon1,
    latitude2: lat2,
    longitude2: lon2,
  );

  // 打印计算结果
  print('从位置 1 到位置 2 的距离为: ${haversine.distance()} 米');
}

运行结果

运行上述代码后,您将看到类似以下的输出:

从位置 1 到位置 2 的距离为: 83.75454545454546 米

更多关于Flutter地理距离计算插件haversine的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地理距离计算插件haversine的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中,你可以使用 haversine 插件来计算两个地理坐标点之间的距离。haversine 是一个基于 Haversine 公式的库,用于计算地球上两点之间的大圆距离。

安装 haversine 插件

首先,你需要在 pubspec.yaml 文件中添加 haversine 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  haversine: ^2.0.0

然后运行 flutter pub get 来安装依赖。

使用 haversine 插件

安装完成后,你可以在你的 Dart 代码中使用 haversine 插件来计算两个坐标点之间的距离。

import 'package:flutter/material.dart';
import 'package:haversine/haversine.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: DistanceCalculator(),
    );
  }
}

class DistanceCalculator extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // 定义两个地理坐标点
    LatLng point1 = LatLng(37.7749, -122.4194); // 旧金山
    LatLng point2 = LatLng(34.0522, -118.2437); // 洛杉矶

    // 计算两点之间的距离
    double distance = Haversine.distance(point1, point2);

    return Scaffold(
      appBar: AppBar(
        title: Text('地理距离计算'),
      ),
      body: Center(
        child: Text('旧金山到洛杉矶的距离: ${distance.toStringAsFixed(2)} 公里'),
      ),
    );
  }
}

解释

  1. LatLng: LatLnghaversine 插件中用于表示地理坐标的类。它包含两个属性:latitudelongitude

  2. Haversine.distance: Haversine.distance 方法用于计算两个 LatLng 点之间的距离。默认情况下,距离以公里为单位返回。

  3. toStringAsFixed(2): 这个方法用于将距离保留两位小数。

其他单位

如果你希望以其他单位(如米或英里)获取距离,可以使用 Haversine.distance 方法的可选参数 unit

double distanceInMeters = Haversine.distance(point1, point2, unit: Unit.METER);
double distanceInMiles = Haversine.distance(point1, point2, unit: Unit.MILE);
回到顶部