35 lines
994 B
JavaScript
35 lines
994 B
JavaScript
/*
|
|
CM.LatLng represents a geographical point with latitude and longtitude coordinates.
|
|
*/
|
|
|
|
L.LatLng = function(/*Number*/ lat, /*Number*/ lng, /*Boolean*/ noWrap) {
|
|
if (noWrap !== true) {
|
|
lat = Math.max(Math.min(lat, 90), -90); // clamp latitude into -90..90
|
|
lng = (lng + 180) % 360 + (lng < -180 ? 180 : -180); // wrap longtitude into -180..180
|
|
}
|
|
|
|
//TODO change to lat() & lng()
|
|
this.lat = lat;
|
|
this.lng = lng;
|
|
};
|
|
|
|
L.Util.extend(L.LatLng, {
|
|
DEG_TO_RAD: Math.PI / 180,
|
|
RAD_TO_DEG: 180 / Math.PI,
|
|
MAX_MARGIN: 1.0E-9 // max margin of error for the "equals" check
|
|
});
|
|
|
|
L.LatLng.prototype = {
|
|
equals: function(/*LatLng*/ obj) {
|
|
if (!(obj instanceof L.LatLng)) { return false; }
|
|
|
|
var margin = Math.max(Math.abs(this.lat - obj.lat), Math.abs(this.lng - obj.lng));
|
|
return margin <= L.LatLng.MAX_MARGIN;
|
|
},
|
|
|
|
toString: function() {
|
|
return 'LatLng(' +
|
|
L.Util.formatNum(this.lat) + ', ' +
|
|
L.Util.formatNum(this.lng) + ')';
|
|
}
|
|
}; |