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 deadline = false;
|
||||||
|
|
||||||
var ajaxlookup = function () {
|
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({
|
$.ajax({
|
||||||
url: SETTINGS.geocodeapi,
|
url: SETTINGS.geocodeapi,
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
@ -308,6 +330,13 @@ function addPackageByAddress(number, street, citystate, type, callback) {
|
|||||||
if (resp.status == "OK") {
|
if (resp.status == "OK") {
|
||||||
if (resp.accuracy.ok) {
|
if (resp.accuracy.ok) {
|
||||||
addPackage(resp.address.street, resp.coords[0], resp.coords[1], type, callback, deadline);
|
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 {
|
} else {
|
||||||
playSound("error");
|
playSound("error");
|
||||||
app.dialog.confirm(
|
app.dialog.confirm(
|
||||||
|
@ -301,6 +301,7 @@ var SETTINGS = {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
geocodecacheexpiry: 604800, // One week
|
||||||
geocodeapi: "https://apis.netsyms.net/packagehelper/geocode.php",
|
geocodeapi: "https://apis.netsyms.net/packagehelper/geocode.php",
|
||||||
trackingapi: "https://apis.netsyms.net/packagehelper/track.php",
|
trackingapi: "https://apis.netsyms.net/packagehelper/track.php",
|
||||||
weatherapi: "https://apis.netsyms.net/packagehelper/weather.php",
|
weatherapi: "https://apis.netsyms.net/packagehelper/weather.php",
|
||||||
|
Loading…
x
Reference in New Issue
Block a user