User can now create a polygon
This commit is contained in:
+54
-2
@@ -1,10 +1,11 @@
|
||||
let db = require("../config/db.js");
|
||||
let mathFunc = require("./mathFunc.js");
|
||||
let util = require("util");
|
||||
|
||||
module.exports = {
|
||||
getPolygons : function (req, res) {
|
||||
if (req.query.gameID != null) {
|
||||
let query = "CALL getPolygonPoints(\"samdum\");";
|
||||
console.log("hi");
|
||||
let query = "CALL getPolygonPoints(\"" + req.query.gameID + "\");";
|
||||
db.get().query(query, function(err, rows){
|
||||
if (err) return res.send(400);
|
||||
res.send(rows[0]);
|
||||
@@ -13,5 +14,56 @@ module.exports = {
|
||||
} else {
|
||||
res.send(500);
|
||||
}
|
||||
},
|
||||
isPolygon: function (req, res) {
|
||||
if (req.body.gameID != null && req.body.userID != null && req.body.points != null) {
|
||||
let gameID = req.body.gameID;
|
||||
let userID = req.body.userID;
|
||||
let points = JSON.parse(req.body.points);
|
||||
console.log(points);
|
||||
if (points.length < 2) {
|
||||
res.send([]);
|
||||
} else {
|
||||
let firstPoint = points[0];
|
||||
let lastPoint = points[points.length - 1];
|
||||
let distance = mathFunc.gpsToMeters(firstPoint.lat, firstPoint.lng, lastPoint.lat, lastPoint.lng);
|
||||
console.log(distance);
|
||||
if (distance < 3) {
|
||||
//area is just 1 for now we fix later.
|
||||
query = util.format("CALL insertPolygon(\"%s\", \"%s\", 1)", gameID, userID);
|
||||
db.get().query(query, function(err, rows) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return res.send(400);
|
||||
}
|
||||
|
||||
let polygonID = rows[0][0].polygonID;
|
||||
query = "INSERT INTO polygonPoints (polygonID, lat, lng) VALUES ";
|
||||
let delimiterNecessary = false;
|
||||
|
||||
points.map((point) => {
|
||||
if (delimiterNecessary) {
|
||||
query += ",";
|
||||
}
|
||||
query += util.format("(\"%s\",%s,%s)", polygonID, point.lat, point.lng);
|
||||
delimiterNecessary = true;
|
||||
});
|
||||
query += ";";
|
||||
|
||||
db.get().query(query, function(err, pointRows) {
|
||||
if (err) {
|
||||
console.log(err);
|
||||
return res.send(400);
|
||||
}
|
||||
res.send(rows[0][0]);
|
||||
return;
|
||||
});
|
||||
});
|
||||
} else {
|
||||
res.send([]);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
module.exports = {
|
||||
gpsToMeters: function (lat1, lon1, lat2, lon2){ // generally used geo measurement function
|
||||
var R = 6378.137; // Radius of earth in KM
|
||||
var dLat = lat2 * Math.PI / 180 - lat1 * Math.PI / 180;
|
||||
var dLon = lon2 * Math.PI / 180 - lon1 * Math.PI / 180;
|
||||
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
|
||||
Math.cos(lat1 * Math.PI / 180) * Math.cos(lat2 * Math.PI / 180) *
|
||||
Math.sin(dLon/2) * Math.sin(dLon/2);
|
||||
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
|
||||
var d = R * c;
|
||||
return d * 1000; // meters
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user