82 lines
2.1 KiB
JavaScript
82 lines
2.1 KiB
JavaScript
/// PORTAL DATA TOOLS ///////////////////////////////////////////////////
|
|
// misc functions to get portal info
|
|
|
|
// search through the links data for all that link from or to a portal. returns an object with separate lists of in
|
|
// and out links. may or may not be as accurate as the portal details, depending on how much data the API returns
|
|
window.getPortalLinks = function(guid) {
|
|
|
|
var links = { in: [], out: [] };
|
|
|
|
$.each(window.links, function(g,l) {
|
|
var d = l.options.data;
|
|
|
|
if (d.oGuid == guid) {
|
|
links.out.push(g);
|
|
}
|
|
if (d.dGuid == guid) {
|
|
links.in.push(g);
|
|
}
|
|
});
|
|
|
|
return links;
|
|
}
|
|
|
|
|
|
// search through the fields for all that reference a portal
|
|
window.getPortalFields = function(guid) {
|
|
var fields = [];
|
|
|
|
$.each(window.fields, function(g,f) {
|
|
var d = f.options.data;
|
|
|
|
if ( d.points[0].guid == guid
|
|
|| d.points[1].guid == guid
|
|
|| d.points[2].guid == guid ) {
|
|
|
|
fields.push(g);
|
|
}
|
|
});
|
|
|
|
return fields;
|
|
}
|
|
|
|
|
|
// find the lat/lon for a portal, using any and all available data
|
|
// (we have the list of portals, the cached portal details, plus links and fields as sources of portal locations)
|
|
window.findPortalLatLng = function(guid) {
|
|
if (window.portals[guid]) {
|
|
return window.portals[guid].getLatLng();
|
|
}
|
|
|
|
// not found in portals - try the cached (and possibly stale) details - good enough for location
|
|
var details = portalDetail.get(guid);
|
|
if (details) {
|
|
return L.latLng (details.locationE6.latE6/1E6, details.locationE6.lngE6/1E6);
|
|
}
|
|
|
|
// now try searching through fields
|
|
for (var fguid in window.fields) {
|
|
var f = window.fields[fguid].options.data;
|
|
|
|
for (var i in f.points) {
|
|
if (f.points[i].guid == guid) {
|
|
return L.latLng (f.points[i].latE6/1E6, f.points[i].lngE6/1E6);
|
|
}
|
|
}
|
|
}
|
|
|
|
// and finally search through links
|
|
for (var lguid in window.links) {
|
|
var l = window.links[lguid].options.data;
|
|
if (l.oGuid == guid) {
|
|
return L.latLng (l.oLatE6/1E6, l.oLngE6/1E6);
|
|
}
|
|
if (l.dGuid == guid) {
|
|
return L.latLng (l.dLatE6/1E6, l.dLngE6/1E6);
|
|
}
|
|
}
|
|
|
|
// no luck finding portal lat/lng
|
|
return undefined;
|
|
}
|