¿Cómo puedo encontrar la proximidad del área visible de mi mapa?Google Maps v3 - Radio del mapa visible en millas
Todo esto funciona y es una publicación para ayudar a otros que puedan estar buscando.
Este código mira su Google Map v3 y muestra por var proximidad el radio en millas de su vista de mapa actual.
Asegúrese de que en el código HTML que tiene
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true&libraries=geometry"></script>
como bibliotecas = geometría habilita.
// 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
Espero que ayude a alguien.
Una edición adicional (no probado) que permite la rotación de la pantalla sigue:
// 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
Otra EDITAR
// 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
};
pongo el código editado en el primer mensaje.
Terran
+1 Me gusta su enfoque generoso! Pero, para permanecer en el estilo de preguntas y respuestas del sitio, le sugiero que publique el objetivo en la pregunta y la solución como una respuesta y luego lo acepte (incluso si es el suyo). Gracias;) – bluish
Gracias - Lo haré - No estaba seguro de lo que era el eticado;) –
Me vendría bien agregar un cheque usando otras esquinas, ya que esto es para una aplicación en un teléfono que también puede darse la vuelta (orientación). Según lecturas que toman el mayor número según la proximidad de uso. –