Flutter LV95坐标转换插件lv95的使用

Flutter LV95坐标转换插件lv95的使用

该插件提供了瑞士LV95(CH1903+)坐标与WGS84坐标之间的转换功能。

使用方法

import 'package:lv95/lv95.dart';

void main() {
  // 定义一个WGS84坐标
  final wgs84 = LatLng(46.93371248052634, 7.120573812162601);
  
  // 将WGS84坐标转换为LV95坐标
  final xy = LV95.fromWGS84(wgs84);
  print(xy); // 输出 XY(x:1198118.3615880755, y:2575779.6599590005)

  // 将LV95坐标转换回WGS84坐标
  final wgs84_2 = LV95.toWGS84(xy);
  print(wgs84_2); // 输出 LatLng(46.93371394740376, 7.120579242285814)
}

默认实现使用的是快速近似算法。如果你需要更精确但较慢的算法,可以通过指定precise: true来请求。当使用精确计算时,如果能通过GNSS接收器或其他方式确定高度信息,还可以进一步提高转换的准确性。

import 'package:lv95/lv95.dart';

void main() {
  // 定义一个WGS84坐标
  final wgs84 = LatLng(46.93371248052634, 7.120573812162601);
  
  // 将WGS84坐标转换为LV95坐标,使用精确算法并指定高度
  final xy = LV95.fromWGS84(wgs84, precise: true, height: 431.3);
  print(xy); // 输出 XY(x:1198118.3469151012, y:2575779.6827807147)
}

现在结果与由https://github.com/perron2/lv95/blob/master/3提供的官方在线转换工具给出的结果完全一致。

参考

该库使用的计算公式基于瑞士联邦测绘局(swisstopo)提供的官方公式:

示例代码

以下是完整的示例代码:

import 'package:lv95/lv95.dart';

void main() {
  // 定义一个WGS84坐标
  final wgs84 = LatLng(46.93371248052634, 7.120573812162601);
  
  // 将WGS84坐标转换为LV95坐标
  final xy = LV95.fromWGS84(wgs84);
  print(xy);

  // 将LV95坐标转换回WGS84坐标
  final wgs84_2 = LV95.toWGS84(xy);
  print(wgs84_2);

  // 使用精确算法将WGS84坐标转换为LV95坐标,并指定高度
  final xyp = LV95.fromWGS84(wgs84, precise: true, height: 431.3);
  print(xyp);
}

更多关于Flutter LV95坐标转换插件lv95的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter LV95坐标转换插件lv95的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


在Flutter中使用LV95坐标转换插件,通常是为了将瑞士的LV95坐标系(也称为CH1903+坐标系)转换为WGS84坐标系(全球通用的经纬度坐标系),或者进行相反的转换。以下是一个简单的步骤指南,帮助你使用lv95插件进行坐标转换。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  lv95: ^1.0.0  # 请确保使用最新版本

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

2. 导入包

在你的Dart文件中导入lv95包:

import 'package:lv95/lv95.dart';

3. 使用lv95进行坐标转换

将WGS84坐标转换为LV95坐标

void convertWGS84ToLV95() {
  // WGS84坐标(纬度,经度)
  double latitude = 46.94798; // 例如:苏黎世的纬度
  double longitude = 7.44744; // 例如:苏黎世的经度

  // 转换为LV95坐标
  LV95Coordinate lv95Coordinate = LV95.fromWGS84(latitude, longitude);

  print('LV95 X: ${lv95Coordinate.x}');
  print('LV95 Y: ${lv95Coordinate.y}');
}

将LV95坐标转换为WGS84坐标

void convertLV95ToWGS84() {
  // LV95坐标(X, Y)
  double x = 2600000.0; // 例如:苏黎世的X坐标
  double y = 1200000.0; // 例如:苏黎世的Y坐标

  // 转换为WGS84坐标
  WGS84Coordinate wgs84Coordinate = LV95.toWGS84(x, y);

  print('WGS84 Latitude: ${wgs84Coordinate.latitude}');
  print('WGS84 Longitude: ${wgs84Coordinate.longitude}');
}

4. 运行代码

你可以在Flutter应用的任何地方调用上述函数来进行坐标转换。例如,在main函数中调用:

void main() {
  convertWGS84ToLV95();
  convertLV95ToWGS84();
}

5. 示例输出

运行上述代码后,你可能会看到类似以下的输出:

LV95 X: 2600000.0
LV95 Y: 1200000.0
WGS84 Latitude: 46.94798
WGS84 Longitude: 7.44744
回到顶部