Skip to content

入门指南

如何将 Turf 添加到项目中取决于您的环境和工具,但这里有一些指导原则帮助您开始。

Turf 发布版本的权威来源是 NPM。欢迎使用其他重新发布这些包的提供商。

安装

在 Node.js 中

# 获取所有 turf 功能
npm install @turf/turf

# 或获取独立包
npm install @turf/helpers
npm install @turf/buffer

从 v7 开始,同时包含 CommonJS 和 ESM 打包文件。

在浏览器中

无论是本地下载还是直接包含第三方版本的 turf,都有多个 CDN 可供选择,每个都有允许您指定所需版本的 URL 方案,具有一定的灵活性。根据您的需要构建 URL:

例如,下载最新压缩版本 7,并将其包含在脚本标签中。这将暴露一个名为 turf 的全局变量。

<script src="turf.min.js" charset="utf-8"></script>

您也可以直接从 CDN 包含它。此示例指定 v7 中的最新版本。

<script src="https://cdn.jsdelivr.net/npm/@turf/turf@7/turf.min.js"></script>

不建议使用为您提供 Turf latest 最新前沿版本的 CDN URL,特别是在生产应用中。主版本之间的 turf 函数有破坏性更改,可能会使您的应用处于损坏状态,因为它总是为浏览器用户提供最新版本。

TypeScript

TypeScript 定义包含在每个 Turf 模块中并由其导出,除了 GeoJSON 类型定义(例如 PolygonFeatureCollection),这些由 @types/geojson 包提供。Turf 不重新导出这些类型定义。如果需要它们,可以直接导入和使用,例如 import { Polygon, FeatureCollection } from 'geojson'。您可能需要先安装 @types/geojson 包。

其他语言

Turf.js 的移植版本可用于:

  • Java (Android、Java SE)

  • Swift (iOS、macOS、tvOS、watchOS、Linux)

    • Swift 版 Turf 处于实验阶段,其公共 API 可能会更改。请谨慎使用。

  • Dart/Flutter (Dart Web、Dart Native;适用于 iOS、Android、macOS、Windows、Linux、Web 的 Flutter)

    • Dart 版 Turf 移植仍在进行中,实现状态可在 README 中找到。


Turf 中的数据

Turf 使用 GeoJSON 处理所有地理数据。Turf 要求数据为标准 WGS84 经纬度坐标。查看 geojson.io 获取一个轻松创建此数据的工具。

注意: 根据 GeoJSON 标准,Turf 要求数据按(经度、纬度)顺序排列。

大多数 Turf 函数使用 GeoJSON 要素工作。这些是表示属性集合(例如:人口、海拔、邮政编码等)和几何体的数据片段。GeoJSON 有几种几何体类型,例如:

  • Point(点)
  • LineString(线)
  • Polygon(多边形)

Turf 提供了一些自己的几何函数。这些只是输出纯 GeoJSON 的简单(且可选)包装器。例如,这两种创建点的方法在功能上是等效的:

// 注意顺序:经度、纬度。
var point1 = turf.point([-73.988214, 40.749128]);

var point2 = {
  type: "Feature",
  geometry: {
    type: "Point",
    // 注意顺序:经度、纬度。
    coordinates: [-73.988214, 40.749128],
  },
  properties: {},
};

浏览器支持

Turf 包编译为 ES2017 目标。但是,@turf/turf 的浏览器版本已转译以包括对 IE11 的支持。如果您使用这些包并需要支持 IE11,请在构建过程中转译以下包:

@turf/*
robust-predicates
rbush
tinyqueue