3
A
回答
1
您需要將其建模爲一個點,然後半徑存儲在另一個領域的支持。如果你想測試某個東西是否在那個圓圈內,你將需要使用接近空間索引here
-1
另一種方法。在這種情況下,我使用貓鼬最受歡迎的MongoDB發行版之一來向具有半徑的地圖添加圓,然後使用外部參數進行查詢並評估它是在圓內還是在圓外。 該示例還對多邊形進行了註釋部分,如果已經保存了多邊形並且想要搜索該點是否存在於多邊形內部,則也可以這樣做。此外,還有一個即將推出的前端和後端全面集成的部分,以提供完整的地理圍欄體驗。
代碼
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var assert = require('assert');
console.log('\n===========');
console.log(' mongoose version: %s', mongoose.version);
console.log('========\n\n');
var dbname = 'testing_geojsonPoint';
mongoose.connect('localhost', dbname);
mongoose.connection.on('error', function() {
console.error('connection error', arguments);
});
// schema
var schema = new Schema({
loc: {
type: {
type: String
},
coordinates: []
},
radius : {
type : 'Number'
}
});
schema.index({
loc: '2dsphere'
});
var A = mongoose.model('A', schema);
// mongoose.connection.on('open', function() {
// A.on('index', function(err) {
// if (err) return done(err);
// A.create({
// loc: {
// type: 'Polygon',
// coordinates: [
// [
// [77.69866, 13.025621],
// [77.69822, 13.024999, ],
// [77.699314, 13.025025, ],
// [77.69866, 13.025621]
// ]
// ]
// }
// }, function(err) {
// if (err) return done(err);
// A.find({
// loc: {
// $geoIntersects: {
// $geometry: {
// type: 'Point',
// coordinates: [77.69979,13.02593]
// }
// }
// }
// }, function(err, docs) {
// if (err) return done(err);
// console.log(docs);
// done();
// });
// });
// });
// });
mongoose.connection.on('open', function() {
A.on('index', function(err) {
if (err) return done(err);
A.create({
loc: {
type: 'Point',
coordinates: [77.698027,13.025292],
},
radius : 115.1735664276843
}, function(err, docs) {
if (err) return done(err);
A.find({
loc: {
$geoNear: {
$geometry: {
type: 'Point',
coordinates: [77.69735,13.02489]
},
$maxDistance :docs.radius
}
}
}, function(err, docs) {
if (err) return done(err);
console.log(docs);
done();
});
});
});
});
function done(err) {
if (err) console.error(err.stack);
mongoose.connection.db.dropDatabase(function() {
mongoose.connection.close();
});
}
0
{
<location field>: {
$geoWithin: { $centerSphere: [ [ <x>, <y> ], <radius> ] }
}
}
https://docs.mongodb.com/manual/reference/operator/query/centerSphere/
由於V1.8
4
我有完全相同的問題,解決的辦法是建立一個多邊形那個r粗略近似一個圓圈(想象一下具有32條邊的多邊形)。
我寫了一個module that does this。你可以這樣使用它:
const circleToPolygon = require('circle-to-polygon');
const coordinates = [-27.4575887, -58.99029]; //[lon, lat]
const radius = 100; // in meters
const numberOfEdges = 32; //optional that defaults to 32
let polygon = circleToPolygon(coordinates, radius, numberOfEdges);
相關問題
- 1. MapBoxGL使用自定義顏色添加GeoJSON圓形標記
- 2. Leaflet:如何在geojson圖層上使用自定義標記?
- 3. 如何在Highcharts地圖中使用自定義JSON(不是GeoJSON)?
- 4. 通過算法定義一個圓圈
- 5. 自定義JLabel繪製一個圓圈
- 6. 如何爲mongo數據庫模式定義一個圓?
- 7. android - 如何定義一個圓圈內的可觸摸區域
- 8. 如何使用pywavelets定義一個自定義Ricker小波?
- 9. 如何調用一個方法定義的另一個定義
- 10. 加入GeoJSON到另一個GeoJSON
- 11. 如何使用KineticJS從一個圓圈創建箭頭到另一個圓圈?
- 12. 使用動作腳本如何使用動作腳本如何畫一個半圓畫一個半圓
- 13. 使用自定義圖像的圓角
- 14. 如何使用css創建圓自定義進度條
- 15. 使用一個圓的javaScript
- 16. 如何使UIButton成爲一個圓圈?
- 17. 的Box2D - 如何使一個空心圓
- 18. 如何使一個自定義安裝
- 19. 如何在一個圓圈
- 20. 如何使用圓角和兩個文字視圖創建自定義視圖?
- 21. 如何使用python從geojson創建GeometryCollection?
- 22. 我如何使用Gson解析GeoJson?
- 23. 如何使用TopoJSON閱讀geojson文件
- 24. Folium:來自GeoJson的圓形標記
- 25. 如何將傳單繪製的數據自定義爲GeoJSON?
- 26. 如何用Javascript定義一個類
- 27. DataLayer/GeoJson自定義Google莊家
- 28. 基於proj4定義重投影GeoJSON的
- 29. 角度傳單geojson自定義標記
- 30. 在MySql中使用MapBox創建一個GeoJson來使用javascript API
我把圓轉換成近似正則polygen – Tallmad