入门指南
如何将 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 类型定义(例如 Polygon、FeatureCollection),这些由 @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