76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
'use strict';
|
|
|
|
var Long = require('long');
|
|
var s2node = require('s2geometry-node');
|
|
var S2 = require('../src/s2geometry.js').S2;
|
|
|
|
var tests = [
|
|
{ 'name': 'Provo, UT'
|
|
, 'lat': 40.2574448
|
|
, 'lng': -111.7089464
|
|
, 'key': ''
|
|
, 'id': ''
|
|
}
|
|
, { 'name': 'Startup Building'
|
|
, 'lat': 40.2262363
|
|
, 'lng': -111.6630927
|
|
, 'key': ''
|
|
, 'id': ''
|
|
}
|
|
, { 'name': "Kyderman's"
|
|
, 'lat': 51.352085106718384 // 51.352085106718384
|
|
, 'lng': -2.9877930879592896 // -2.9877930879592896
|
|
, 'key': ''
|
|
, 'id': ''
|
|
}
|
|
, { 'name': "Toeler's"
|
|
, 'lat': -43.525166 // -43.5261282
|
|
, 'lng': 172.655096 // 172.6561085
|
|
, 'key': ''
|
|
, 'id': ''
|
|
}
|
|
/*
|
|
, { 'name': ""
|
|
, 'lat': 0
|
|
, 'lng': 0
|
|
, 'key': ''
|
|
, 'id': ''
|
|
}
|
|
*/
|
|
];
|
|
|
|
// get known-expected values
|
|
tests.forEach(function (loc) {
|
|
var level = 15;
|
|
var s2nLatLng = new s2node.S2LatLng(loc.lat, loc.lng);
|
|
var s2nId = new s2node.S2CellId(s2nLatLng).parent(level);
|
|
var s2nCell = new s2node.S2Cell(s2nId);
|
|
|
|
loc.face = s2nCell.face();
|
|
loc.id = s2nId.id();
|
|
loc.key = s2nId.toString();
|
|
loc.lat = s2nId.toLatLng().toString().split(',')[0];
|
|
loc.lng = s2nId.toLatLng().toString().split(',')[1];
|
|
loc.level = s2nId.level(); // always 15
|
|
|
|
//console.log(JSON.stringify(loc, null, ' '));
|
|
|
|
var key = S2.latLngToQuadkey(loc.lat, loc.lng, level);
|
|
var id = S2.toId(key);
|
|
var key2 = S2.toKey(id);
|
|
var id2 = S2.toId(key2);
|
|
|
|
if (loc.key !== key || loc.id !== id || loc.key !== key2 || loc.id !== id2) {
|
|
console.error("Error testing " + loc.name + " @ " + loc.lat + ',' + loc.lng);
|
|
console.error("Calculated/Expected:");
|
|
console.error(id, ':', loc.id);
|
|
console.error(key, " : ", loc.key);
|
|
console.error(id2, ':', loc.id);
|
|
console.error(key2, " : ", loc.key);
|
|
console.error(Long.fromString(id, true, 10).toString(2));
|
|
console.error(Long.fromString(loc.id, true, 10).toString(2));
|
|
|
|
throw new Error('Test Failed');
|
|
}
|
|
});
|