Reputation: 529
How can I find the proximity of the visible area of my map ?
All this works and is a post to help others who may be looking.
This code looks at your Google Map v3 and outputs by var proximity the radius in miles of your current map view.
Make sure in your HTML you have
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>
as libraries=geometry enables it.
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius / proximity End
I hope it helps someone.
An additional edit ( untested ) which allows for screen rotation follows:
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
var sw = bounds.getSouthWest();
var ne = bounds.getNorthEast();
var se = bounds.getSouthEast();
var nw = bounds.getNorthWest();
var proximitymeterswne = google.maps.geometry.spherical.computeDistanceBetween (sw, ne);
var proximitymetersenw = google.maps.geometry.spherical.computeDistanceBetween (se, nw);
if (proximitymeterswne > proximitymetersenw) {proximitymeterswne = proximitymiles}
else {if (proximitymetersenw > proximitymeterswne) {proximitymetersenw = proximitymiles};};
var proximitymiles = proximitymeter * 0.000621371192;
alert(" " + proximitymiles + " Miles Proximity");
var proxmity = proximitymiles;
// Get Gmap radius / proximity End
Another EDIT
// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
// http://stackoverflow.com/questions/3525670/radius-of-viewable-region-in-google-maps-v3
// Get Gmap radius / proximity start
var bounds = new google.maps.LatLngBounds();
// bounds = map.LatLngBounds();
//center = new google.maps.LatLng();
ne = bounds.getNorthEast();
center = map.getCenter();
//var center = map.LatLngBounds.getCenter();
//var ne = map.LatLngBounds.getNorthEast();
// r = radius of the earth in statute miles
var r = 3963.0;
// Convert lat or lng from decimal degrees into radians (divide by 57.2958)
var lat1 = center.lat() / 57.2958;
var lon1 = center.lng() / 57.2958;
var lat2 = ne.lat() / 57.2958;
var lon2 = ne.lng() / 57.2958;
// distance = circle radius from center to Northeast corner of bounds
proximity = r * Math.acos(Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon2 - lon1));
$('#proximity').val(proximity);
// Get Gmap radius / proximity End
};
I put the edited code in the first post.
Terran
Upvotes: 14
Views: 9812
Reputation: 529
// Watches for map bounds change - if so - set radius and refresh data Start
function setproximityfrommap() {
// http://stackoverflow.com/questions/3525670/radius-of-viewable-region-in-google-maps-v3
// Get Gmap radius / proximity start
// First, determine the map bounds
var bounds = map.getBounds();
// Then the points
var swPoint = bounds.getSouthWest();
var nePoint = bounds.getNorthEast();
// Now, each individual coordinate
var swLat = swPoint.lat();
var swLng = swPoint.lng();
var neLat = nePoint.lat();
var neLng = nePoint.lng();
var proximitymeter = google.maps.geometry.spherical.computeDistanceBetween(swPoint, nePoint);
var proximitymiles = proximitymeter * 0.000621371192;
proxmity = proximitymiles;
console.log("Proxmity " + proximitymiles + " miles");
}
Upvotes: 10