forked from 0x2620/oxjs
init
This commit is contained in:
commit
5b8b31271c
87 changed files with 73788 additions and 0 deletions
110
build/js/ox.geo.js
Normal file
110
build/js/ox.geo.js
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
/*
|
||||
################################################################################
|
||||
ox.geo.js
|
||||
|
||||
requires
|
||||
jquery.js
|
||||
ox.js
|
||||
################################################################################
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
var earthRadius = 6378137,
|
||||
earthCircumference = 2 * Math.PI * earthRadius
|
||||
latMax = Ox.deg(Math.atan(Ox.sinh(Math.PI))),
|
||||
latMin = -latMax;
|
||||
/*
|
||||
map = {
|
||||
width: window.innerWidth,
|
||||
height: window.innerHeight,
|
||||
margin: 16
|
||||
};
|
||||
*/
|
||||
|
||||
Ox.getLatLng = (function() {
|
||||
/*
|
||||
returns {lat, lng} for a given (x, y)
|
||||
*/
|
||||
function getLatLng(xy) {
|
||||
return (xy - 0.5) * 2 * Math.PI;
|
||||
}
|
||||
return function(x, y) {
|
||||
return {
|
||||
lat: -Ox.deg(Math.atan(Ox.sinh(getLatLng(y)))),
|
||||
lng: Ox.deg(getLatLng(x))
|
||||
};
|
||||
};
|
||||
})();
|
||||
|
||||
Ox.getPlacemarks = (function() {
|
||||
/*
|
||||
Ox.getPlacemarks(name, callback)
|
||||
Ox.getPlacemarks(lat, lng, callback)
|
||||
*/
|
||||
var cache = {};
|
||||
return function() {
|
||||
|
||||
// $.getScript("http://maps.google.com/maps/api/js?sensor=false", function() {
|
||||
// getPlacemarks(args);
|
||||
// });
|
||||
|
||||
|
||||
// var args = arguments;
|
||||
var reverse = typeof arguments[0] == "number",
|
||||
query = $.extend({
|
||||
language: "en"
|
||||
}, !reverse ? {
|
||||
address: arguments[0]
|
||||
} : {
|
||||
latLng: new google.maps.LatLng(arguments[0], arguments[1])
|
||||
}),
|
||||
id = JSON.stringify(query),
|
||||
callback = arguments[arguments.length - 1],
|
||||
geocoder = new google.maps.Geocoder();
|
||||
if (cache[id]) {
|
||||
callback(cache[id]);
|
||||
} else {
|
||||
geocoder.geocode(query, function(results, status) {
|
||||
var data = {
|
||||
results: results,
|
||||
status: status
|
||||
};
|
||||
cache[id] = data;
|
||||
callback(data);
|
||||
});
|
||||
}
|
||||
|
||||
};
|
||||
})();
|
||||
|
||||
Ox.getXY = (function() {
|
||||
/*
|
||||
returns {x, y} for a given (lat, lng), between 0 and 1
|
||||
*/
|
||||
function getXY(xy) {
|
||||
return (xy / (2 * Math.PI) + 0.5);
|
||||
}
|
||||
return function(lat, lng) {
|
||||
return {
|
||||
x: getXY(Ox.rad(lng)),
|
||||
y: getXY(Ox.asinh(Math.tan(Ox.rad(-lat))))
|
||||
};
|
||||
};
|
||||
})();
|
||||
|
||||
/*
|
||||
Ox.getZ = function(placemark, map) {
|
||||
// returns zoom level at which placemark is fully included
|
||||
map.width -= 2 * map.margin;
|
||||
map.height -= 2 * map.margin;
|
||||
var northEast = getXY(placemark.northEast),
|
||||
southWest = getXY(placemark.southWest),
|
||||
width = (northEast.x - southWest.x),
|
||||
height = (northEast.y - southWest.y),
|
||||
return parseInt(Ox.log(width / height > map.width / map.height ?
|
||||
map.width / width : map.height / height, 2));
|
||||
};
|
||||
*/
|
||||
|
||||
})();
|
||||
Loading…
Add table
Add a link
Reference in a new issue