Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 30 additions & 1 deletion lib/server/routes/restaurants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ var express = require('express');
var router = express.Router();
var request = require('request');
var googleApiKey = require('config').get('googlePlacesApiKey');
var myLatitude;
var myLongitude;

/**
* Given the specified latitude and longitude, give me back
Expand All @@ -24,6 +26,9 @@ router.get('/', function (req, res) {

var location = req.query.latitude + ',' + req.query.longitude;

myLatitude = req.query.latitude;
myLongitude = req.query.longitude;

var requestOptions = {
url: 'https://maps.googleapis.com/maps/api/place/nearbysearch/json',
qs: {
Expand Down Expand Up @@ -62,10 +67,34 @@ router.get('/', function (req, res) {
break;
}

/* Compute distance from lat/lon using Haversine Formula */
var deg2rad = Math.PI/180;
var dlon = deg2rad*myLongitude - deg2rad*result.geometry.location.lng;
var dlat = deg2rad*myLatitude - deg2rad*result.geometry.location.lat;

var a = (Math.sin(dlat/2))*(Math.sin(dlat/2)) + Math.cos(deg2rad*result.geometry.location.lat) * Math.cos(deg2rad*myLatitude) * (Math.sin(dlon/2))*(Math.sin(dlon/2));

var c = 2 * Math.atan2( Math.sqrt(a), Math.sqrt(1-a) );

/* Consider I18N here */
var earth_radius_miles = 3959;
var d = earth_radius_miles * c;
var dUnits = " miles";
if (d<0) {
d=0.0;
}
if (d<0.1) {
d = Math.round(5280 * d);
dUnits = " feet";
} else {
d = Math.round(10*d)/10;
}

restaurants.push({
id: result.id,
name: result.name
name: result.name + "[" + result.vicinity + "], " + d + dUnits + " away."
});

}

res.send(restaurants);
Expand Down