File Manager
/**
* @namespace WPGMZA
* @module LatLngBounds
* @requires WPGMZA
*/
jQuery(function($) {
/**
* This class represents latitude and longitude bounds as a rectangular area.
* NB: This class is not fully implemented
* @class WPGMZA.LatLngBounds
* @constructor WPGMZA.LatLngBounds
* @memberof WPGMZA
*/
WPGMZA.LatLngBounds = function(southWest, northEast)
{
//console.log("Created bounds", southWest, northEast);
if(southWest instanceof WPGMZA.LatLngBounds)
{
var other = southWest;
this.south = other.south;
this.north = other.north;
this.west = other.west;
this.east = other.east;
}
else if(southWest && northEast)
{
// TODO: Add checks and errors
this.south = southWest.lat;
this.north = northEast.lat;
this.west = southWest.lng;
this.east = northEast.lng;
}
}
WPGMZA.LatLngBounds.fromGoogleLatLngBounds = function(googleLatLngBounds)
{
if(!(googleLatLngBounds instanceof google.maps.LatLngBounds))
throw new Error("Argument must be an instance of google.maps.LatLngBounds");
var result = new WPGMZA.LatLngBounds();
var southWest = googleLatLngBounds.getSouthWest();
var northEast = googleLatLngBounds.getNorthEast();
result.north = northEast.lat();
result.south = southWest.lat();
result.west = southWest.lng();
result.east = northEast.lng();
return result;
}
WPGMZA.LatLngBounds.fromGoogleLatLngBoundsLiteral = function(obj)
{
var result = new WPGMZA.LatLngBounds();
var southWest = obj.southwest;
var northEast = obj.northeast;
result.north = northEast.lat;
result.south = southWest.lat;
result.west = southWest.lng;
result.east = northEast.lng;
return result;
}
/**
* Returns true if this object is in it's initial state (eg no points specified to gather bounds from)
* @method
* @memberof WPGMZA.LatLngBounds
* @return {bool} True if the object is in it's initial state
*/
WPGMZA.LatLngBounds.prototype.isInInitialState = function()
{
return (this.north == undefined && this.south == undefined && this.west == undefined && this.east == undefined);
}
/**
* Extends this bounds object to encompass the given latitude and longitude coordinates
* @method
* @memberof WPGMZA.LatLngBounds
* @param {object|WPGMZA.LatLng} latLng either a LatLng literal or an instance of WPGMZA.LatLng
*/
WPGMZA.LatLngBounds.prototype.extend = function(latLng)
{
if(!(latLng instanceof WPGMZA.LatLng))
latLng = new WPGMZA.LatLng(latLng);
//console.log("Expanding bounds to " + latLng.toString());
if(this.isInInitialState())
{
this.north = this.south = latLng.lat;
this.west = this.east = latLng.lng;
return;
}
if(latLng.lat < this.north)
this.north = latLng.lat;
if(latLng.lat > this.south)
this.south = latLng.lat;
if(latLng.lng < this.west)
this.west = latLng.lng;
if(latLng.lng > this.east)
this.east = latLng.lng;
}
WPGMZA.LatLngBounds.prototype.extendByPixelMargin = function(map, x, arg)
{
var y = x;
if(!(map instanceof WPGMZA.Map))
throw new Error("First argument must be an instance of WPGMZA.Map");
if(this.isInInitialState())
throw new Error("Cannot extend by pixels in initial state");
if(arguments.length >= 3)
y = arg;
var southWest = new WPGMZA.LatLng(this.south, this.west);
var northEast = new WPGMZA.LatLng(this.north, this.east);
southWest = map.latLngToPixels(southWest);
northEast = map.latLngToPixels(northEast);
southWest.x -= x;
southWest.y += y;
northEast.x += x;
northEast.y -= y;
southWest = map.pixelsToLatLng(southWest.x, southWest.y);
northEast = map.pixelsToLatLng(northEast.x, northEast.y);
var temp = this.toString();
this.north = northEast.lat;
this.south = southWest.lat;
this.west = southWest.lng;
this.east = northEast.lng;
// console.log("Extended", temp, "to", this.toString());
}
WPGMZA.LatLngBounds.prototype.contains = function(latLng)
{
//console.log("Checking if latLng ", latLng, " is within bounds " + this.toString());
if(!(latLng instanceof WPGMZA.LatLng))
throw new Error("Argument must be an instance of WPGMZA.LatLng");
if(latLng.lat < Math.min(this.north, this.south))
return false;
if(latLng.lat > Math.max(this.north, this.south))
return false;
if(this.west < this.east)
return (latLng.lng >= this.west && latLng.lng <= this.east);
return (latLng.lng <= this.west || latLng.lng >= this.east);
}
WPGMZA.LatLngBounds.prototype.toString = function()
{
return this.north + "N " + this.south + "S " + this.west + "W " + this.east + "E";
}
WPGMZA.LatLngBounds.prototype.toLiteral = function()
{
return {
north: this.north,
south: this.south,
west: this.west,
east: this.east
};
}
});
File Manager Version 1.0, Coded By Lucas
Email: hehe@yahoo.com