SDK数据库 Geo
Geo
数据库地理位置结构集
方法:
Geo.Point(longitude: number, latitude: number): GeoPoint
支持端:小程序 , 云函数 , Web
构造一个地理位置 ”点“。方法接受两个必填参数,第一个是经度(longitude),第二个是纬度(latitude),务必注意顺序。
参数
longitude: number
经度
latitude: number
纬度
返回值
GeoPoint
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.Point(113, 23)
}
}).then(console.log).catch(console.error)
除了使用接口构造一个点外,也可以使用等价的 GeoJSON 的 点 (Point) 的 JSON 表示,其格式如下:
{
"type": "Point",
"coordinates": [longitude, latitude] // 数字数组:[经度, 纬度]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'Point',
coordinates: [113, 23]
}
}
}).then(console.log).catch(console.error)
Geo.LineString(points: GeoPoint[]): GeoPoint
支持端:小程序 2.6.3, 云函数
构造一个地理位置的 ”线“。一个线由两个或更多的点有序连接组成。
参数
points: GeoPoint[]
“点” 数组
返回值
GeoPoint
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.LineString([
db.Geo.Point(113, 23),
db.Geo.Point(120, 50),
// ... 可选更多点
])
}
}).then(console.log).catch(console.error)
除了使用接口构造一条 LineString 外,也可以使用等价的 GeoJSON 的 线 (LineString) 的 JSON 表示,其格式如下:
{
"type": "LineString",
"coordinates": [
[p1_lng, p1_lat],
[p2_lng, p2_lng]
// ... 可选更多点
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'LineString',
coordinates: [
[113, 23],
[120, 50]
]
}
}
}).then(console.log).catch(console.error)
Geo.Polygon(lineStrings: GeoLineString[]): GeoPolygon
支持端:小程序 2.6.3, 云函数
构造一个地理位置 ”多边形“
参数
lineStrings: GeoLineString[]
“线” 数组
返回值
GeoPolygon
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
说明
一个多边形由一个或多个线性环(Linear Ring)组成,一个线性环即一个闭合的线段。一个闭合线段至少由四个点组成,其中最后一个点和第一个点的坐标必须相同,以此表示环的起点和终点。如果一个多边形由多个线性环组成,则第一个线性环表示外环(外边界),接下来的所有线性环表示内环(即外环中的洞,不计在此多边形中的区域)。如果一个多边形只有一个线性环组成,则这个环就是外环。
多边形构造规则:
- 第一个线性环必须是外环
- 外环不能自交
- 所有内环必须完全在外环内
- 各个内环间不能相交或重叠,也不能有共同的边
- 外环应为逆时针,内环应为顺时针
示例代码
示例代码:单环多边形
const { Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: Polygon([
LineString([
Point(0, 0),
Point(3, 2),
Point(2, 3),
Point(0, 0)
])
])
}
}).then(console.log).catch(console.error)
示例代码:含一个外环和一个内环的多边形
const { Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: Polygon([
// 外环
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
// 内环
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
])
}
}).then(console.log).catch(console.error)
除了使用接口构造一个 Polygon 外,也可以使用等价的 GeoJSON 的 多边形 (Polygon) 的 JSON 表示,其格式如下:
{
"type": "Polygon",
"coordinates": [
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // 外环
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // 可选内环 1
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ], // 可选内环 n
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'Polygon',
coordinates: [
[ [0, 0], [30, 20], [20, 30], [0, 0] ],
[ [10, 10], [16, 14], [14, 16], [10, 10]]
]
}
}
}).then(console.log).catch(console.error)
Geo.MultiPoint(points: GeoPoint[]): GeoMultiPoint
支持端:小程序 2.6.3, 云函数
构造一个地理位置的 ”点“ 的集合。一个点集合由一个或更多的点组成。
参数
points: GeoPoint[]
“点” 数组
返回值
GeoMultiPoint
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.MultiPoint([
db.Geo.Point(113, 23),
db.Geo.Point(120, 50),
// ... 可选更多点
])
}
}).then(console.log).catch(console.error)
除了使用接口构造 MultiPoint 外,也可以使用等价的 GeoJSON 的 点集合 (MultiPoint) 的 JSON 表示,其格式如下:
{
"type": "MultiPoint",
"coordinates": [
[p1_lng, p1_lat],
[p2_lng, p2_lng]
// ... 可选更多点
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiPoint',
coordinates: [
[113, 23],
[120, 50]
]
}
}
}).then(console.log).catch(console.error)
Geo.MultiPoint(points: GeoPoint[]): GeoMultiPoint
支持端:小程序 2.6.3, 云函数
构造一个地理位置的 ”点“ 的集合。一个点集合由一个或更多的点组成。
参数
points: GeoPoint[]
“点” 数组
返回值
GeoMultiPoint
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: db.Geo.MultiPoint([
db.Geo.Point(113, 23),
db.Geo.Point(120, 50),
// ... 可选更多点
])
}
}).then(console.log).catch(console.error)
除了使用接口构造 MultiPoint 外,也可以使用等价的 GeoJSON 的 点集合 (MultiPoint) 的 JSON 表示,其格式如下:
{
"type": "MultiPoint",
"coordinates": [
[p1_lng, p1_lat],
[p2_lng, p2_lng]
// ... 可选更多点
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiPoint',
coordinates: [
[113, 23],
[120, 50]
]
}
}
}).then(console.log).catch(console.error)
Geo.MultiLineString(lineStrings: GeoLineString[]): GeoMultiLineString
支持端:小程序 2.6.3, 云函数
构造一个地理位置 ”线“ 集合。一个线集合由多条线组成。
参数
lineStrings: GeoLineString[]
“线” 数组
返回值
GeoMultiLineString
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
示例代码
const { LineString, MultiLineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: MultiLineString([
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
])
}
}).then(console.log).catch(console.error)
除了使用接口构造一个 MultiLineString 外,也可以使用等价的 GeoJSON 的 线集合 (MultiLineString) 的 JSON 表示,其格式如下:
{
"type": "MultiLineString",
"coordinates": [
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiLineString',
coordinates: [
[ [0, 0], [3, 3] ],
[ [5, 10], [20, 30] ]
]
}
}
}).then(console.log).catch(console.error)
Geo.MultiPolygon(polygons: GeoPolygon[]): GeoMultiPolygon
支持端:小程序 2.6.3, 云函数
构造一个地理位置 ”多边形“ 集合。一个多边形集合由多个多边形组成。
参数
polygons: GeoPolygon[]
“多边形” 数组
返回值
GeoMultiPolygon
索引
如存储地理位置信息的字段有被查询的需求,务必对字段建立地理位置索引
说明
多边形集合由多个多边形组成。一个多边形由一个或多个线性环(Linear Ring)组成,一个线性环即一个闭合的线段。一个闭合线段至少由四个点组成,其中最后一个点和第一个点的坐标必须相同,以此表示环的起点和终点。如果一个多边形由多个线性环组成,则第一个线性环表示外环(外边界),接下来的所有线性环表示内环(即外环中的洞,不计在此多边形中的区域)。如果一个多边形只有一个线性环组成,则这个环就是外环。
多边形构造规则:
- 第一个线性环必须是外环
- 外环不能自交
- 所有内环必须完全在外环内
- 各个内环间不能相交或重叠,也不能有共同的边
- 外环应为逆时针,内环应为顺时针
示例代码
示例代码
const { MultiPolygon, Polygon, LineString, Point } = db.Geo
db.collection('todos').add({
data: {
description: 'eat an apple',
location: MultiPolygon([
Polygon([
LineString([ Point(50, 50), Point(60, 80), Point(80, 60), Point(50, 50) ]),
]),
Polygon([
LineString([ Point(0, 0), Point(30, 20), Point(20, 30), Point(0, 0) ]),
LineString([ Point(10, 10), Point(16, 14), Point(14, 16), Point(10, 10) ])
]),
])
}
}).then(console.log).catch(console.error)
除了使用接口构造一个 MultiPolygon 外,也可以使用等价的 GeoJSON 的 多边形 (MultiPolygon) 的 JSON 表示,其格式如下:
{
"type": "MultiPolygon",
"coordinates": [
// polygon 1
[
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
],
...
// polygon n
[
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ],
...
[ [lng, lat], [lng, lat], [lng, lat], ..., [lng, lat] ]
],
]
}
示例代码
db.collection('todos').add({
data: {
description: 'eat an apple',
location: {
type: 'MultiPolygon',
coordinates: [
[
[ [50, 50], [60, 80], [80, 60], [50, 50] ]
],
[
[ [0, 0], [30, 20], [20, 30], [0, 0] ],
[ [10, 10], [16, 14], [14, 16], [10, 10]]
]
]
}
}
}).then(console.log).catch(console.error)
类型:
GeoPoint
地理位置 “点”
属性
longitude: number
经度
latitude: number
纬度
方法
GeoPoint.toJSON(): Object
返回相应的 GeoJSON 结构的对象
GeoLineString
地理位置的 ”线“。一个线由两个或更多的点有序连接组成。
属性
points: GeoPoint[]
“点” 数组
方法
GeoLineString.toJSON(): Object
返回相应的 GeoJSON 结构的对象
GeoPolygon
地理位置 ”多边形“
属性
lines: GeoLineString[]
“线” 数组
方法
GeoPolygon.toJSON(): Object
返回相应的 GeoJSON 结构的对象
GeoMultiPoint
地理位置的 ”点“ 的集合。一个点集合由一个或更多的点组成。
属性
points: GeoPoint[]
“点” 数组
方法
GeoMultiPoint.toJSON(): Object
返回相应的 GeoJSON 结构的对象
GeoMultiLineString
地理位置 ”线“ 集合。一个线集合由多条线组成。
属性
lines: GeoLineString[]
“线” 数组
方法
GeoMultiLineString.toJSON(): Object
返回相应的 GeoJSON 结构的对象
GeoMultiPolygon
地理位置 ”多边形“ 集合。一个多边形集合由多个多边形组成。
属性
polygons: GeoPolygon[]
“多边形” 数组
方法
GeoMultiPolygon.toJSON(): Object
返回相应的 GeoJSON 结构的对象
更多建议: