我需要知道设备是否处于 NodeJS 后端的地理围栏中
I need to know whether device is in geofencing or not in backend of NodeJS
我正在为 android 和 iOS 的超级应用创建 NodeJS 后端。用户的位置将从 phone 中获取,坐标即纬度和经度将被发送到服务器。有2组用户。让我们说 drivers 和乘客。一旦乘客按下搜索 driver,我需要向乘客半径 5 公里内的所有 driver 发送通知。任何想法如何实现这个逻辑。??。
在前端,将在乘客周围创建地理围栏。我无法弄清楚的是如何在服务器端知道 drivers 是否在那些地理围栏中。
前端也是由我使用 React Native 开发的,因此也欢迎从前端的角度提出任何建议。谢谢
MongoDB支持地理空间查询,可以查询指定地理范围内的文档。
假设我们有 drivers
集合如下
db.drivers.insertMany( [
{
name:"Patrick Konrab",
location: { type: "Point", coordinates: [ -73.97, 40.77 ] },
},
{
name: "James Webb",
location: { type: "Point", coordinates: [ -73.9928, 40.7193 ] },
category: "Parks"
},
{
name: "Kyle Grill",
location: { type: "Point", coordinates: [ -73.9375, 40.8303 ] },
}
] )
以下操作在位置字段上创建一个 2dsphere
索引:
db.drivers.createIndex( { location: "2dsphere" } )
上面的 drivers
集合有一个 2dsphere
索引。以下查询使用 $near
运算符来 return 距指定 GeoJSON 点至少 1000 meters
且最多 5000 meters
的文档,按从最近到最远的顺序排序:
// Passenger coordinates should be returned user device
//https://github.com/react-native-geolocation/react-native-geolocation
const passengerCoordinate = [ -73.9667, 40.78 ]
db.drivers.find(
{
location:
{ $near:
{
$geometry: { type: "Point", coordinates: passengerCoordinate },
$minDistance: 1000,
$maxDistance: 5000
}
}
}
)
我正在为 android 和 iOS 的超级应用创建 NodeJS 后端。用户的位置将从 phone 中获取,坐标即纬度和经度将被发送到服务器。有2组用户。让我们说 drivers 和乘客。一旦乘客按下搜索 driver,我需要向乘客半径 5 公里内的所有 driver 发送通知。任何想法如何实现这个逻辑。??。 在前端,将在乘客周围创建地理围栏。我无法弄清楚的是如何在服务器端知道 drivers 是否在那些地理围栏中。 前端也是由我使用 React Native 开发的,因此也欢迎从前端的角度提出任何建议。谢谢
MongoDB支持地理空间查询,可以查询指定地理范围内的文档。
假设我们有 drivers
集合如下
db.drivers.insertMany( [
{
name:"Patrick Konrab",
location: { type: "Point", coordinates: [ -73.97, 40.77 ] },
},
{
name: "James Webb",
location: { type: "Point", coordinates: [ -73.9928, 40.7193 ] },
category: "Parks"
},
{
name: "Kyle Grill",
location: { type: "Point", coordinates: [ -73.9375, 40.8303 ] },
}
] )
以下操作在位置字段上创建一个 2dsphere
索引:
db.drivers.createIndex( { location: "2dsphere" } )
上面的 drivers
集合有一个 2dsphere
索引。以下查询使用 $near
运算符来 return 距指定 GeoJSON 点至少 1000 meters
且最多 5000 meters
的文档,按从最近到最远的顺序排序:
// Passenger coordinates should be returned user device
//https://github.com/react-native-geolocation/react-native-geolocation
const passengerCoordinate = [ -73.9667, 40.78 ]
db.drivers.find(
{
location:
{ $near:
{
$geometry: { type: "Point", coordinates: passengerCoordinate },
$minDistance: 1000,
$maxDistance: 5000
}
}
}
)