Flutter地图工具插件maps_toolkit的使用

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

Flutter地图工具插件maps_toolkit的使用

maps_toolkit

Pub Package Build Status Coverage Status GitHub Issues GitHub Forks GitHub Stars License

maps_toolkit 是一个用于计算区域、距离和航向测量的库(从 android-maps-utils 移植的 spherical_util.dart)。

Getting Started

在你的 Dart/Flutter 项目中添加依赖:

dependencies:
   ...
   maps_toolkit: ^3.0.0

简单用法示例

下面是一个简单的例子,它计算了两个城市之间的距离:

import 'package:maps_toolkit/maps_toolkit.dart';

void main() {
  final cityLondon = LatLng(51.5073509, -0.1277583);
  final cityParis = LatLng(48.856614, 2.3522219);

  final distance =
      SphericalUtil.computeDistanceBetween(cityLondon, cityParis) / 1000.0;

  print('Distance between London and Paris is $distance km.');
}

使用带有Google Maps包的例子

当与Google Maps一起使用时,可以为导入指定前缀以避免命名冲突:

import 'package:maps_toolkit/maps_toolkit.dart' as mp;
import 'package:google_maps/google_maps.dart';
import 'package:test/test.dart';

void main() {
  final pointFromToolkit = mp.LatLng(90, 0);
  final pointFromGoogleMap = LatLng(90, 0);

  mp.SphericalUtil.computeAngleBetween(pointFromToolkit, pointFromToolkit);
}

函数列表

以下是 maps_toolkit 提供的一些主要函数:

  • SphericalUtil.computeArea - 计算地球上的封闭路径面积。
  • SphericalUtil.computeDistanceBetween - 计算两点之间的距离(以米为单位)。
  • SphericalUtil.computeHeading - 计算从一个点到另一个点的航向。
  • SphericalUtil.computeLength - 计算给定路径的长度(以米为单位),在地球上。
  • SphericalUtil.computeOffset - 计算从原点按照指定航向移动一定距离后的点。
  • SphericalUtil.computeOffsetOrigin - 计算目的地位置、行驶距离和原始航向提供的起点位置。
  • SphericalUtil.computeSignedArea - 计算地球上的封闭路径的有符号面积。
  • SphericalUtil.interpolate - 计算位于起点和终点之间指定比例的位置。
  • PolygonUtil.containsLocation - 计算给定点是否位于指定多边形内。
  • PolygonUtil.isLocationOnEdge - 计算给定点是否位于多边形的边缘上或附近,在指定的容差范围内(以米为单位)。
  • PolygonUtil.isLocationOnPath - 计算给定点是否位于折线或多边形的边上或附近,在指定的容差范围内(以米为单位)。
  • PolygonUtil.locationIndexOnPath - 计算给定点是否位于折线或多边形的边上或附近,并返回索引。
  • PolygonUtil.locationIndexOnEdgeOrPath - 计算给定点是否位于折线或多边形的边上或附近,并返回索引。
  • PolygonUtil.simplify - 使用Douglas-Peucker算法简化给定的多边形(折线或多边形)。
  • PolygonUtil.isClosedPolygon - 如果提供的点列表是闭合多边形,则返回true。
  • PolygonUtil.distanceToLine - 计算点p到线段start到end的距离。
  • PolygonUtil.decode - 将编码的路径字符串解码成一系列LatLng对象。
  • PolygonUtil.encode - 将一系列LatLng对象编码成编码的路径字符串。

特性和错误报告

请在 issue tracker 上提交功能请求和错误报告。


更多关于Flutter地图工具插件maps_toolkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter地图工具插件maps_toolkit的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用maps_toolkit插件的一个简单示例。maps_toolkit是一个强大的Flutter插件,它提供了一系列用于地图操作的功能。不过请注意,由于maps_toolkit并非一个官方广泛认可的插件名称,以下示例将基于一个假设的类似插件功能进行展示。如果你具体指的是某个特定的第三方插件,请参考其官方文档进行调整。

首先,确保你的Flutter项目已经创建,并且在pubspec.yaml文件中添加了maps_toolkit(或类似的地图工具插件)依赖:

dependencies:
  flutter:
    sdk: flutter
  google_maps_flutter: ^2.x.x  # 假设maps_toolkit依赖于google_maps_flutter
  # 假设的maps_toolkit插件(实际使用时替换为真实插件名)
  maps_toolkit: ^x.y.z

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

接下来,在你的Flutter应用中使用该插件。以下是一个基本的示例,展示了如何在Flutter中使用地图工具插件显示一个地图,并在地图上添加一个标记(Marker)。

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:maps_toolkit/maps_toolkit.dart'; // 假设的插件导入

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

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

class MapScreen extends StatefulWidget {
  @override
  _MapScreenState createState() => _MapScreenState();
}

class _MapScreenState extends State<MapScreen> {
  late GoogleMapController _controller;
  final Set<Marker> _markers = {};

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Maps Toolkit Demo'),
      ),
      body: GoogleMap(
        mapType: MapType.hybrid,
        initialCameraPosition: CameraPosition(
          target: LatLng(37.7749, -122.4194), // 旧金山
          zoom: 11.0,
        ),
        markers: _markers,
        onMapCreated: (GoogleMapController controller) {
          _controller = controller;
          // 使用maps_toolkit添加标记(假设的方法)
          _addMarkerWithToolkit();
        },
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          // 示例:使用默认方法添加标记
          _addMarkerWithDefaultMethod();
        },
        tooltip: 'Add Marker',
        child: Icon(Icons.add),
      ),
    );
  }

  // 使用maps_toolkit添加标记的假设方法
  void _addMarkerWithToolkit() {
    // 假设maps_toolkit提供了一个简便方法来添加标记
    // 这里我们使用一个假设的函数addMarkerWithToolkit
    // 注意:实际使用时请参考插件文档
    MapsToolkit.addMarkerWithToolkit(
      _controller,
      LatLng(37.7759, -122.4184), // 稍微偏移的位置
      'Toolkit Marker',
    ).then((marker) {
      setState(() {
        _markers.add(marker);
      });
    });
  }

  // 使用默认方法添加标记
  void _addMarkerWithDefaultMethod() {
    final Marker marker = Marker(
      markerId: MarkerId('marker_id_${_markers.length}'),
      position: LatLng(37.7749, -122.4194), // 旧金山
      infoWindow: InfoWindow(title: 'Default Marker', snippet: 'Default Description'),
    );

    setState(() {
      _markers.add(marker);
    });
  }
}

请注意,MapsToolkit.addMarkerWithToolkit是一个假设的方法,实际使用时,你应该参考你所使用的具体插件的文档来调用相应的方法。此外,google_maps_flutter插件是用于显示Google地图的基本插件,而maps_toolkit(或类似的插件)可能会提供额外的功能,如更方便的标记管理、聚合标记、地理围栏等。

确保你查阅并遵循你所使用的具体插件的文档和API参考,以获取最准确和最新的使用方法。

回到顶部