Dank einer vorherigen Berechnung habe ich die Koordinate der Mitte einer Stadt, die zuvor abgefragt wurde: [lon, lat]
. Ich habe einen anderen Parameter in der Abfrage radius
. Ich möchte alle Dokumente in meiner Datenbank innerhalb dieses virtuellen Zyklus finden.MongoDB - GeoJSON - Dokument in einem Radius finden
Mein Schema:
const artisanSchema = new Schema ({
created: { type: Date, default: Date.now },
updated: { type: Date, default: Date.now },
name: { type: String, index: true },
address: {
street: String,
zip: { type: String, index: true },
town: { type: String, index: true }
},
contact: {
tel: String,
mail: String,
web: String
},
activities: [String],
type: String,
geometry: mongoose.Schema.Types.Point, //"geometry": {"coordinates":[0.704378,45.194518],"type": "Point"
}
tagMetier: [Number]
});
ich versuche, eine Abfrage wie folgt:
Artisan.
find ({
'tagMetier': tag,
'geometry': { $geoWithin: { $centerSphere: [ [ myTown.longitude, myTown.latitude ], rad ] } }
},
function (err, artisan) {
if (err) throw err;
else {
res.send(artisan);
}
})
.limit(10)
Wenn ich mir wie 200 km oder mehr mit der Stadt bekam Antworten meine eigene Stadt mit einem Radius von 5km Ziel, von wo aus Ich wohne.
Das ist, was passiert, wenn Sie nur 2 Stunden wegen einer Codierung Eile schlafen, können Sie die Dokumentation zu schnell lesen. Die 2. Parametereinheit ist nicht Kilometer (ich bin französisch übrigens, also werde ich nicht imperial System;)). Also muss ich den Radianten wie folgt berechnen: 'rad/6378.1' – Ragnar