2011-04-27 19:24:33 +00:00
|
|
|
Ox.load.Geo = function(options, callback) {
|
|
|
|
|
2011-05-07 15:56:29 +00:00
|
|
|
Ox.getJSON(Ox.PATH + 'Ox.Geo/json/Ox.Geo.json', function(data) {
|
2011-04-27 19:24:33 +00:00
|
|
|
|
2011-05-09 08:54:52 +00:00
|
|
|
//@ Constants ----------------------------------------------------------
|
|
|
|
|
|
|
|
/*@
|
|
|
|
Ox.COUNTRIES <[o]> Array of countries
|
2011-05-11 16:33:19 +00:00
|
|
|
A list of independent (or de-facto independent) countries and
|
|
|
|
dependencies (see
|
|
|
|
<a href="http://en.wikipedia.org/wiki/List_of_sovereign_states">Wikipedia</a>),
|
|
|
|
other entities with
|
|
|
|
<a href="http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2">ISO 3166-1 alpha-2</a>
|
|
|
|
country codes, and former countries according to <a href="http://en.wikipedia.org/wiki/ISO_3166-3">ISO 3166-3</a>
|
|
|
|
and <a href="http://www.imdb.com/country/">IMDb</a>.
|
2011-05-09 08:54:52 +00:00
|
|
|
area <n> Area of the country in square meters
|
2011-05-11 16:33:19 +00:00
|
|
|
code <s> ISO 3166-1 alpha-2 country code
|
2011-05-09 08:54:52 +00:00
|
|
|
dependencies <[s]> Array of dependencies of the country (country codes)
|
|
|
|
dependency <[s]> Array of countries the country is a dependency of (country codes)
|
|
|
|
east <n> Longitude of eastern boundary in deg
|
|
|
|
former <b> True if the country is a former country
|
|
|
|
imageURLs <o> Collection of dataURLs
|
|
|
|
marker <s> Map marker
|
|
|
|
imdbCode <s> IMDb country code
|
|
|
|
imdbName <s> IMDb country name
|
|
|
|
lat <n> Latitude of the center in deg
|
|
|
|
lng <n> Longitude of the center in deg
|
|
|
|
name <s> Name
|
|
|
|
north <n> Latitude of northern boundary in deg
|
|
|
|
other <b> True if the country is an "other entity" (EU, FX, UK)
|
|
|
|
south <n> Latitude of southern boundary in deg
|
|
|
|
wikipediaURL <s> URL of the wikipedia article for the country
|
|
|
|
west <n> Longitude of western boundary in deg
|
|
|
|
<script>
|
|
|
|
Ox.test.array = [
|
|
|
|
// Current independent countries with dependencies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return c.dependencies.length && !c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Current independent countries without dependencies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return !c.dependencies.length && !c.dependency.length &&
|
|
|
|
!c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Current dependecies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return c.dependency.length && !c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Former independent countries with dependencies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return c.dependencies.length && c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Former independent countries without dependencies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return !c.dependencies.length && !c.dependency.length &&
|
|
|
|
c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Former dependecies
|
|
|
|
Ox.COUNTRIES.filter(function(c) {
|
|
|
|
return c.dependency.length && c.former && !c.other;
|
|
|
|
}).length,
|
|
|
|
// Other entities
|
|
|
|
Ox.COUNTRIES.filter(function(c) { return c.other; }).length
|
|
|
|
];
|
|
|
|
</script>
|
|
|
|
> Ox.COUNTRIES.length
|
|
|
|
311
|
|
|
|
> Ox.sum(Ox.test.array)
|
|
|
|
311
|
|
|
|
> Ox.test.array
|
|
|
|
[15, 189, 74, 1, 16, 13, 3]
|
|
|
|
@*/
|
2011-04-27 19:24:33 +00:00
|
|
|
Ox.COUNTRIES = data;
|
|
|
|
|
2011-05-09 08:54:52 +00:00
|
|
|
//@ Functions ----------------------------------------------------------
|
|
|
|
|
|
|
|
/*@
|
|
|
|
Ox.getCountryByCode <f> Returns a country object for a given country code
|
|
|
|
(code) -> <o> Country object
|
|
|
|
code <s> ISO 3166 country code
|
|
|
|
> Ox.getCountryByCode('US').name
|
|
|
|
'United States'
|
|
|
|
@*/
|
|
|
|
|
2011-04-27 19:24:33 +00:00
|
|
|
Ox.getCountryByCode = function(code) {
|
|
|
|
var country;
|
|
|
|
Ox.forEach(Ox.COUNTRIES, function(c) {
|
|
|
|
if (c.code == code) {
|
|
|
|
country = c;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return country;
|
|
|
|
};
|
|
|
|
|
2011-05-22 17:12:21 +00:00
|
|
|
/*@
|
|
|
|
Ox.getCountryByGeoname <f> Returns a country object for a given geoname
|
|
|
|
(name) -> <o> Country object
|
|
|
|
name <s> Geoname
|
|
|
|
> Ox.getCountryByGeoname('Los Angeles, California, United States').code
|
|
|
|
'US'
|
|
|
|
> Ox.getCountryByGeoname('The Bottom, Saba, Bonaire, Saint Eustatius and Saba').code
|
|
|
|
'BQ'
|
|
|
|
@*/
|
|
|
|
|
|
|
|
Ox.getCountryByGeoname = function(geoname) {
|
|
|
|
return Ox.getCountryByName(
|
|
|
|
geoname.split(', ').pop()
|
|
|
|
.replace('Saint Eustatius', 'Bonaire, Saint Eustatius')
|
|
|
|
);
|
|
|
|
}
|
|
|
|
|
2011-05-09 08:54:52 +00:00
|
|
|
/*@
|
|
|
|
Ox.getCountryByName <f> Returns a country object for a given country name
|
|
|
|
(name) -> <o> Country object
|
|
|
|
name <s> Country name
|
|
|
|
> Ox.getCountryByName('United States').code
|
|
|
|
'US'
|
|
|
|
@*/
|
|
|
|
|
2011-04-27 19:24:33 +00:00
|
|
|
Ox.getCountryByName = function(name) {
|
|
|
|
var country;
|
|
|
|
Ox.forEach(Ox.COUNTRIES, function(c) {
|
|
|
|
if (c.name == name) {
|
|
|
|
country = c;
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
});
|
|
|
|
return country;
|
|
|
|
};
|
|
|
|
|
|
|
|
callback(true);
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
}
|