added new geo coder details
This commit is contained in:
parent
4f28573ee8
commit
9e69e6942f
13
package-lock.json
generated
13
package-lock.json
generated
@ -52,7 +52,7 @@
|
|||||||
},
|
},
|
||||||
"@sinonjs/formatio": {
|
"@sinonjs/formatio": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "http://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/@sinonjs/formatio/-/formatio-2.0.0.tgz",
|
||||||
"integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==",
|
"integrity": "sha512-ls6CAMA6/5gG+O/IdsBcblvnd8qcO/l1TYoNeAzp3wcISOxlPXQEus0mLcdwazEkWjaBdaJ3TaxmNgCLWwvWzg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"requires": {
|
"requires": {
|
||||||
@ -3395,7 +3395,6 @@
|
|||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"delayed-stream": "~1.0.0"
|
"delayed-stream": "~1.0.0"
|
||||||
}
|
}
|
||||||
@ -3458,8 +3457,7 @@
|
|||||||
"delayed-stream": {
|
"delayed-stream": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"delegates": {
|
"delegates": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
@ -3747,14 +3745,12 @@
|
|||||||
"mime-db": {
|
"mime-db": {
|
||||||
"version": "1.27.0",
|
"version": "1.27.0",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"mime-types": {
|
"mime-types": {
|
||||||
"version": "2.1.15",
|
"version": "2.1.15",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"optional": true,
|
|
||||||
"requires": {
|
"requires": {
|
||||||
"mime-db": "~1.27.0"
|
"mime-db": "~1.27.0"
|
||||||
}
|
}
|
||||||
@ -3830,8 +3826,7 @@
|
|||||||
"number-is-nan": {
|
"number-is-nan": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"bundled": true,
|
"bundled": true,
|
||||||
"dev": true,
|
"dev": true
|
||||||
"optional": true
|
|
||||||
},
|
},
|
||||||
"oauth-sign": {
|
"oauth-sign": {
|
||||||
"version": "0.8.2",
|
"version": "0.8.2",
|
||||||
|
23
server.js
23
server.js
@ -8,6 +8,7 @@ const foursquare = require('./server/foursquare');
|
|||||||
const rightbyme = require('./server/RightByMe');
|
const rightbyme = require('./server/RightByMe');
|
||||||
const agenda = require('./server/agenda');
|
const agenda = require('./server/agenda');
|
||||||
const directions = require('./server/directions');
|
const directions = require('./server/directions');
|
||||||
|
const geocode = require('./server/geocode');
|
||||||
|
|
||||||
logger.level = 'debug';
|
logger.level = 'debug';
|
||||||
|
|
||||||
@ -113,6 +114,28 @@ app.get('/fsexplore', cache('15 minutes'), (req, res) => {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
app.get('/geocode', /*cache('15 minutes'),*/ (req, res) => {
|
||||||
|
if (req.query.hasOwnProperty('ll')) {
|
||||||
|
const ll = req.query.ll;
|
||||||
|
console.log('ll',ll);
|
||||||
|
geocode.doGetGeocode(ll)
|
||||||
|
.then((d) => {
|
||||||
|
res.set('Cache-Control', 'public, max-age=900');
|
||||||
|
res.send(d);
|
||||||
|
}).catch((e) => {
|
||||||
|
logger.error(e);
|
||||||
|
res.status(500).send('There was an error!');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
// throw new Error('Weather: LL missing');
|
||||||
|
logger.warn('FS: LL missing');
|
||||||
|
res.status(500).send('LL Missing');
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
app.get('/rightbyme', cache('86400 seconds'), (req, res) => {
|
app.get('/rightbyme', cache('86400 seconds'), (req, res) => {
|
||||||
if (req.query.hasOwnProperty('ll'))
|
if (req.query.hasOwnProperty('ll'))
|
||||||
rightbyme.doGetRightByMe(req.query.ll)
|
rightbyme.doGetRightByMe(req.query.ll)
|
||||||
|
96
server/geocode.js
Normal file
96
server/geocode.js
Normal file
@ -0,0 +1,96 @@
|
|||||||
|
const NodeGeocoder = require('node-geocoder');
|
||||||
|
const logger = require('log4js').getLogger('GeoCode');
|
||||||
|
|
||||||
|
const { reduceOpencage } = require('./reducers/opencage');
|
||||||
|
logger.level = 'debug';
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
'provider': 'opencage',
|
||||||
|
|
||||||
|
// Optional depending on the providers
|
||||||
|
'httpAdapter': 'https', // Default
|
||||||
|
'apiKey': '893ab539eca84b5ca7a54cb03ef23443', // for Mapquest, OpenCage, Google Premier
|
||||||
|
'formatter': null // 'gpx', 'string', ...
|
||||||
|
};
|
||||||
|
|
||||||
|
const geocoder = NodeGeocoder(options);
|
||||||
|
|
||||||
|
function doGetGeocode(ll) {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const [lat, lon ] = ll.split(',');
|
||||||
|
|
||||||
|
const latlong = { lat, lon };
|
||||||
|
|
||||||
|
logger.debug(latlong);
|
||||||
|
|
||||||
|
geocoder.reverse(latlong)
|
||||||
|
.then(function(res) {
|
||||||
|
if (res.hasOwnProperty('raw')) {
|
||||||
|
const result = reduceOpencage(res.raw);
|
||||||
|
|
||||||
|
return resolve(result[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
return resolve(res[0]);
|
||||||
|
})
|
||||||
|
.catch(function(err) {
|
||||||
|
logger.error(err);
|
||||||
|
|
||||||
|
return reject(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { doGetGeocode };
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
opencage
|
||||||
|
|
||||||
|
{
|
||||||
|
"latitude": 51.508751,
|
||||||
|
"longitude": -0.067457,
|
||||||
|
"country": "United Kingdom",
|
||||||
|
"city": "London",
|
||||||
|
"state": "England",
|
||||||
|
"zipcode": "SE15",
|
||||||
|
"streetName": "Vaughan Way",
|
||||||
|
"countryCode": "gb",
|
||||||
|
"suburb": "St.George in the East",
|
||||||
|
"extra": {
|
||||||
|
"flag": "🇬🇧",
|
||||||
|
"confidence": 9,
|
||||||
|
"confidenceKM": 0.5,
|
||||||
|
"map": "https://www.openstreetmap.org/?mlat=51.50875&mlon=-0.06746#map=17/51.50875/-0.06746"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
google
|
||||||
|
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"administrativeLevels": {
|
||||||
|
"level1long": "England",
|
||||||
|
"level1short": "England",
|
||||||
|
"level2long": "Northamptonshire",
|
||||||
|
"level2short": "Northamptonshire"
|
||||||
|
},
|
||||||
|
"city": "Northampton",
|
||||||
|
"country": "United Kingdom",
|
||||||
|
"countryCode": "GB",
|
||||||
|
"extra": {
|
||||||
|
"confidence": 0.7,
|
||||||
|
"establishment": "Daventy depot",
|
||||||
|
"googlePlaceId": "ChIJI8H0WFUVd0gRIIFzNwDQAuM",
|
||||||
|
"neighborhood": "Kilsby",
|
||||||
|
"premise": null,
|
||||||
|
"subpremise": null
|
||||||
|
},
|
||||||
|
"formattedAddress": "Daventy depot, Kilsby, Northampton NN6 7GY, UK",
|
||||||
|
"latitude": 52.3546726,
|
||||||
|
"longitude": -1.1741823,
|
||||||
|
"provider": "google",
|
||||||
|
"zipcode": "NN6 7GY"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
*/
|
57
server/reducers/opencage.js
Normal file
57
server/reducers/opencage.js
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
const logger = require('log4js').getLogger('GeoCode 🔧');
|
||||||
|
|
||||||
|
const { get, isEmpty, has, uniq } = require('lodash');
|
||||||
|
|
||||||
|
logger.level = 'debug';
|
||||||
|
|
||||||
|
var ConfidenceInKM = {
|
||||||
|
'10': 0.25,
|
||||||
|
'9': 0.5,
|
||||||
|
'8': 1,
|
||||||
|
'7': 5,
|
||||||
|
'6': 7.5,
|
||||||
|
'5': 10,
|
||||||
|
'4': 15,
|
||||||
|
'3': 20,
|
||||||
|
'2': 25,
|
||||||
|
'1': Number.POSITIVE_INFINITY,
|
||||||
|
'0': Number.NaN
|
||||||
|
};
|
||||||
|
|
||||||
|
function formatResult (result) {
|
||||||
|
var confidence = result.confidence || 0;
|
||||||
|
|
||||||
|
return {
|
||||||
|
'latitude': result.geometry.lat,
|
||||||
|
'longitude': result.geometry.lng,
|
||||||
|
'country': result.components.country,
|
||||||
|
'city': result.components.city,
|
||||||
|
'state': result.components.state,
|
||||||
|
'zipcode': result.components.postcode,
|
||||||
|
'streetName': result.components.road,
|
||||||
|
'streetNumber': result.components.house_number,
|
||||||
|
'countryCode': result.components.country_code,
|
||||||
|
'county': result.components.county,
|
||||||
|
'suburb': result.components.suburb || '',
|
||||||
|
'extra': {
|
||||||
|
'flag' : result.annotations.flag,
|
||||||
|
'confidence': confidence,
|
||||||
|
'confidenceKM': ConfidenceInKM[result.confidence] || Number.NaN,
|
||||||
|
'map' : result.annotations.OSM.url
|
||||||
|
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
function reduceOpencage(result) {
|
||||||
|
|
||||||
|
var results = [];
|
||||||
|
|
||||||
|
if (result && result.results instanceof Array)
|
||||||
|
for (var i = 0; i < result.results.length; i++)
|
||||||
|
results.push(formatResult(result.results[i]));
|
||||||
|
|
||||||
|
return results;
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = { reduceOpencage };
|
@ -75,7 +75,7 @@ function reduceFullFS(data) {
|
|||||||
if (i.type === 'venue')
|
if (i.type === 'venue')
|
||||||
photoItems = i.items;
|
photoItems = i.items;
|
||||||
|
|
||||||
const photosCount = photoItems.length;
|
const photosCount = (typeof(photoItems) !== 'undefined' && photoItems !== null) ? photoItems.length : 0;
|
||||||
const tipsCount = get(localObj, 'tips.count', 0);
|
const tipsCount = get(localObj, 'tips.count', 0);
|
||||||
|
|
||||||
if (photosCount > 0)
|
if (photosCount > 0)
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
// See the License for the specific language governing permissions and
|
// See the License for the specific language governing permissions and
|
||||||
// limitations under the License.
|
// limitations under the License.
|
||||||
const CACHE_VERSION = { 'version': '0.0.933' };
|
const CACHE_VERSION = { 'version': '0.0.934' };
|
||||||
const PRECACHE = `jubileeData-${CACHE_VERSION.version}`;
|
const PRECACHE = `jubileeData-${CACHE_VERSION.version}`;
|
||||||
const RUNTIME = 'runtime';
|
const RUNTIME = 'runtime';
|
||||||
|
|
||||||
|
@ -86,15 +86,29 @@ const LocationModel = Backbone.Model.extend({
|
|||||||
// const current = this.get('location');
|
// const current = this.get('location');
|
||||||
const current = this.toJSON();
|
const current = this.toJSON();
|
||||||
// console.log('># current', current);
|
// console.log('># current', current);
|
||||||
const options = {
|
/*const options = {
|
||||||
'provider': 'google',
|
'provider': 'google',
|
||||||
|
|
||||||
// Optional depending on the providers
|
// Optional depending on the providers
|
||||||
'httpAdapter': 'https', // Default
|
'httpAdapter': 'https', // Default
|
||||||
'apiKey': 'AIzaSyA7oGP6QS28tTwtT6UzA7hzh0b3MWwMYB8', // for Mapquest, OpenCage, Google Premier
|
'apiKey': 'AIzaSyA7oGP6QS28tTwtT6UzA7hzh0b3MWwMYB8', // for Mapquest, OpenCage, Google Premier
|
||||||
'formatter': null // 'gpx', 'string', ...
|
'formatter': null // 'gpx', 'string', ...
|
||||||
|
};*/
|
||||||
|
|
||||||
|
|
||||||
|
// opencage 893ab539eca84b5ca7a54cb03ef23443
|
||||||
|
|
||||||
|
const options = {
|
||||||
|
'provider': 'opencage',
|
||||||
|
|
||||||
|
// Optional depending on the providers
|
||||||
|
'httpAdapter': 'https', // Default
|
||||||
|
'apiKey': '893ab539eca84b5ca7a54cb03ef23443', // for Mapquest, OpenCage, Google Premier
|
||||||
|
'formatter': null // 'gpx', 'string', ...
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const myCoords = { 'home': {
|
const myCoords = { 'home': {
|
||||||
'lat':51.490002, 'long':-0.140245
|
'lat':51.490002, 'long':-0.140245
|
||||||
},
|
},
|
||||||
|
@ -130,7 +130,9 @@ const VenueDetailView = Backbone.View.extend({
|
|||||||
'zoom': 15
|
'zoom': 15
|
||||||
});
|
});
|
||||||
|
|
||||||
L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
|
// L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
|
||||||
|
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
|
||||||
'attribution': 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
|
'attribution': 'Map data © <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
|
||||||
'maxZoom': 18,
|
'maxZoom': 18,
|
||||||
'id': 'mapbox.streets',
|
'id': 'mapbox.streets',
|
||||||
|
Loading…
Reference in New Issue
Block a user