Reputation: 972
When trying to set a new LatLngBounds, for the southwest quarter of the world, the SouthWest longitude is automatically set at the other side of the world, leading to an unconsistent LatLngBounds (SouthWest is more east than NorthEast)
a = new google.maps.LatLng(-90, -180, true);
a.lng();
=> -180
b = new google.maps.LatLng(0, 0, true);
c = new google.maps.LatLngBounds(a, b);
c.getSouthWest().lng();
=> 180
The problem seems not to be in the LatLng, but more in the LatLngBounds. Are they other params or other ways to do it so it can represent this quarter of the world ?
Tests with more parameters, only southwest longitude is always set to -180 : http://jsfiddle.net/vr6ztq9z/1/
Upvotes: 1
Views: 1322
Reputation: 22486
Latitude:
On a Mercator projection, the maximum north latitude is not 90, but something around 85.05113. In JavaScript you can do:
Math.atan(Math.sinh(Math.PI)) * 180 / Math.PI;
This way you can find the real north and south edges of the projection.
Longitude:
What's the difference between a longitude of -180 and 180? None.
You can still identify all 4 quarters of the projection:
var maxLat = Math.atan(Math.sinh(Math.PI)) * 180 / Math.PI;
var center = new google.maps.LatLng(0, 0);
var sw = new google.maps.LatLng(-maxLat, 180);
var ne = new google.maps.LatLng(maxLat, -180);
// Southwest part of the world
new google.maps.LatLngBounds(sw, center);
// Southeast part of the world
new google.maps.LatLngBounds(center, sw);
And so on.
Upvotes: 1