Cita:
Iniciado por brusjc Parece que la pregunta genera demasiadas incertidumbres y me gustaría centrar el tema. Mi intención es marcar un área (B) en medio del campo, no en la ciudad, y un punto A en medio del campo, no en la ciudad. Lo que quiero hacer es saber la mínima distancia (en línea recta se entiende) entre el punto A y cualquier punto del área B.
(...)
Si sirve la ayuda, yo partiría de ver la distancia entre dos puntos. ¿Soluciones?:
- Por Google Maps:
libraries=geometry
Código Javascript
:
Ver originalvar París = new google.maps.LatLng(48.856614, 2.352222);
var SanFrancisco = new google.maps.LatLng(37.774929, -122.419416);
var distancia = google.maps.geometry.spherical.computeDistanceBetween(París, SanFrancisco);
alert ('La distancia es: '+ distancia+' m');
- Directamente por la fórmula del Haversine:
Código Javascript
:
Ver originalNumber.prototype.toRad = function() {
return this * Math.PI / 180;
}
var lat1 = 48.856614;
var long1 = 2.352222;
var lat2 = 37.774929;
var long2 = -122.419416;
var R = 6371; // Radio medio de la tierra en kilómetros
var dLat = (lat2-lat1).toRad(); // Funciones Javascript en radianes
var dLong = (long2-long1).toRad();
var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
Math.sin(dLong/2) * Math.sin(dLong/2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
var d = (R * c).toFixed(3); // Distancia en km con tres decimales
alert (d);
Aunque teóricamente ambos consideran la curvatura del planeta Tierra (
spherical en Google, y la media -Radio medio de la tierra 6371 kilómetros en el segundo caso)- ), hay una diferencia de 10.030 kms. sobre casi 9.000 kms, (posiblemente por la consideración de
la media de la tierra que está entre 6357 kms. en el radio polar y 6371 kms en el radio ecuatorial).
En tu caso (y ahora no te desarrollo código pero sí la idea) lo que se puede hacer es comparar mi punto (digamos que
lat1 y long1 con los puntos de tu área.
Hacer que un área (polígono) sea una polilínea (trazado de una serie de puntos)es tan solo la especificación que le dados en google maps. Es cuestión de ir midiendo las distancias con cada punto y compararlas.
Claro está que, siendo la distancia entre a y (polígono) los puntos b, c, d, ... los puntos más cortos, c y d, puede haber un punto más cercado en su trayectoria. Esto creo que es "¿misión imposible?".
Espero que lo consigas. Tiene futuro la idea.