Add geocode cache (close #30)
This commit is contained in:
parent
771fd271c2
commit
4d9b4abd19
@ -290,6 +290,28 @@ function addPackageByAddress(number, street, citystate, type, callback) {
|
||||
var deadline = false;
|
||||
|
||||
var ajaxlookup = function () {
|
||||
var geocodecache = localStorage.getItem("geocode_cache");
|
||||
if (geocodecache == null) {
|
||||
geocodecache = "{}";
|
||||
localStorage.setItem("geocode_cache", "{}");
|
||||
}
|
||||
|
||||
geocodecache = JSON.parse(geocodecache);
|
||||
var cachekey = number + " || " + street + " || " + citystate;
|
||||
var cacheitem = geocodecache[cachekey];
|
||||
var timestamp = Math.floor(Date.now() / 1000);
|
||||
if (typeof cacheitem != 'undefined') {
|
||||
if (cacheitem.added + SETTINGS.geocodecacheexpiry < timestamp) {
|
||||
console.log("Info", "Removing expired geocode cache item " + cachekey);
|
||||
delete geocodecache[cachekey];
|
||||
localStorage.setItem("geocode_cache", JSON.stringify(geocodecache));
|
||||
} else {
|
||||
console.log("Info", "Using cached geocode result", cacheitem);
|
||||
addPackage(cacheitem.address, cacheitem.latitude, cacheitem.longitude, type, callback, deadline);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
$.ajax({
|
||||
url: SETTINGS.geocodeapi,
|
||||
dataType: 'json',
|
||||
@ -308,6 +330,13 @@ function addPackageByAddress(number, street, citystate, type, callback) {
|
||||
if (resp.status == "OK") {
|
||||
if (resp.accuracy.ok) {
|
||||
addPackage(resp.address.street, resp.coords[0], resp.coords[1], type, callback, deadline);
|
||||
geocodecache[cachekey] = {
|
||||
address: resp.address.street,
|
||||
latitude: resp.coords[0],
|
||||
longitude: resp.coords[1],
|
||||
added: Math.floor(Date.now() / 1000)
|
||||
};
|
||||
localStorage.setItem("geocode_cache", JSON.stringify(geocodecache));
|
||||
} else {
|
||||
playSound("error");
|
||||
app.dialog.confirm(
|
||||
|
@ -301,6 +301,7 @@ var SETTINGS = {
|
||||
]
|
||||
}
|
||||
],
|
||||
geocodecacheexpiry: 604800, // One week
|
||||
geocodeapi: "https://apis.netsyms.net/packagehelper/geocode.php",
|
||||
trackingapi: "https://apis.netsyms.net/packagehelper/track.php",
|
||||
weatherapi: "https://apis.netsyms.net/packagehelper/weather.php",
|
||||
|
Loading…
x
Reference in New Issue
Block a user