问题
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.
回答1:
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
回答2:
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.
回答3:
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.
回答4:
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.
来源:https://stackoverflow.com/questions/11849636/maximum-lat-and-long-bounds-for-the-world-google-maps-api-latlngbounds