The Google Maps terrain view by default has unlimited panning of the map tile. You can use LatLngBounds()
to limit this, but what are the maximum and minimum coordinates I should use to set the viewport as just the earth and not outside the map region?
Coordinates for North America:
var strictBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(28.70, -127.50),
new google.maps.LatLng(48.85, -55.90)
);
I've tried (+90, -180)(-90,180)
to no luck.
The links provided by @Marcelo & @Doc are good for understanding the derivation of the Lat Lng:
- http://www.cienciaviva.pt/latlong/anterior/gps.asp?accao=changelang&lang=en
- https://groups.google.com/forum/?hl=en&fromgroups=#!msg/google-maps-api/oJkyualxzyY/pNv1SE7qpBoJ
- http://en.wikipedia.org/wiki/Mercator_projection#Mathematics_of_the_Projection
But if you just want an answer for the maximum bounds for Google Maps:
Latitude: -85 to +85
(actually -85.05115 for some reason)
Longitude: -180 to +180
Try it for yourself on the Google Maps:
- https://maps.google.com/?q=85,180
- https://maps.google.com/?q=-85.05115,180
(You may need to Zoom Out. See how the pin is at the "edge" of the world - these are the limits)
So in your code Try:
var strictBounds = new google.maps.LatLngBounds(
new google.maps.LatLng(85, -180), // top left corner of map
new google.maps.LatLng(-85, 180) // bottom right corner
);
Please edit this wiki (or update your question) once you have the answer. Thanks
See this post in the old Google Groups, which describes the math of the projection.
Quote:
the map doesn't start at 85 degrees, but rather the degree that
makes the map square. This is can be simply calaculated as:
atan(sinh(PI)) *180 / PI = 85.05112878....
Note that the tile calculation in that post is for the old API V2, but the projection should be the same.
You may do the following to get the Max Lat and Long bounds of the world with the help of Google Maps :
1: Set the Zoom Level 1 of Google Maps While setting up the Google Map Stuff :
mapOptions = {
zoom: 1,
.....
}
2. Do the following to get NorthEast and SouthWest Bound of this Map :
map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
// NorthEast Latitude : 89.45016124669523
var latNEValue = map.getBounds().getNorthEast().lat();
// NorthEast Longitude : 180
var longNEValue = map.getBounds().getNorthEast().lng();
// SouthWest Latitude : -87.71179927260242
var latSWValue = map.getBounds().getSouthWest().lat();
// Southwest Latitude : -180
var longSWValue = map.getBounds().getSouthWest().lng();
3. It will give you following NorthEast and SouthWest Bounds :
NorthEast Latitude : 89.45016124669523
NorthEast Longitude : 180
SouthWest Latitude : -87.71179927260242
Southwest Longitude : -180
Similarly on Zoom Level- 0 , It give following points :
NorthEast Latitude : 89.99346179538875
NorthEast Longitude : 180
SouthWest Latitude : -89.98155760646617
Southwest Longitude : -180
Above trick helped me to solve my business problem which required max lat/long.
for more details in GPS values you can read this article.
Article explain that :
- Latitude is the distance from the Equator measured along the Greenwich Meridian. This distance is measured in degrees and ranges between 0º to 90º North and South.
- Longitude is the distance from the Greenwich Meridian measured along the Equator. This distance is measured in degrees and ranges from 0º to 180º East and West.