javascript - saber - tipos de coordenadas geograficas
Encontrar un conjunto de coordenadas dentro de un cierto rango de latitud y longitide (2)
Tuve que encontrar un código para calcular las distancias de Great Circle hace un tiempo (solo Google "Great Circle" si no sabes de lo que estoy hablando) y encontré este sitio:
http://williams.best.vwh.net/gccalc.htm
Es posible que pueda crear su propio código JavaScript para hacer sus cálculos de rango lat / lon utilizando el JavaScript de ese sitio como referencia. Me parece que solo necesitas dividir los 360 grados de un círculo en un número igual de piezas y dibujar una línea a la misma distancia del centro en cada "rumbo". Una vez que conoces el lat / lon en el otro extremo de cada línea de rumbo / distancia, entonces conectar los puntos para formar un polígono es trivial.
Estoy trabajando en un proyecto en javascript que implica google maps.
El objetivo es descubrir 16-20 puntos de coordenadas dentro de n kilómetros a partir de un conjunto de coordenadas de latitud y longitud, de modo que los 16 puntos, si están conectados, formarán un círculo alrededor de las coordenadas originales.
El objetivo final es hacerlo así puedo deducir las coordenadas para trazar y conectarme en los mapas de Google para hacer un círculo alrededor de un conjunto dado de coordenadas.
El código sería algo así como:
var coordinates = Array();
function findCoordinates(lat, long, range) {
}
coordinates = findCoordinates(-20, 40, 3);
Ahora para hacer que la magia suceda en la función findCoordinates()
.
Básicamente, lo que estás tratando de hacer es encontrar N
puntos en el radio de un círculo desde un punto dado con un radio dado. Una forma simple de hacerlo es dividir los 360 grados de un círculo en N
trozos iguales y encontrar los puntos a intervalos regulares.
Lo siguiente debería hacer más o menos lo que está buscando:
function findCoordinates(lat, long, range)
{
// How many points do we want? (should probably be function param..)
var numberOfPoints = 16;
var degreesPerPoint = 360 / numberOfPoints;
// Keep track of the angle from centre to radius
var currentAngle = 0;
// The points on the radius will be lat+x2, long+y2
var x2;
var y2;
// Track the points we generate to return at the end
var points = [];
for(var i=0; i < numberOfPoints; i++)
{
// X2 point will be cosine of angle * radius (range)
x2 = Math.cos(currentAngle) * range;
// Y2 point will be sin * range
y2 = Math.sin(currentAngle) * range;
// Assuming here you''re using points for each x,y..
p = new Point(lat+x2, long+y2);
// save to our results array
points.push(p);
// Shift our angle around for the next point
currentAngle += degreesPerPoint;
}
// Return the points we''ve generated
return points;
}
El conjunto de puntos que obtienes puede usarse fácilmente para dibujar el círculo que deseas en tu mapa de google.
Sin embargo, si su objetivo general es simplemente dibujar un círculo en un radio fijo alrededor de un punto, entonces una solución mucho más fácil puede ser usar una superposición. Encontré que KMBox es muy fácil de configurar: le das un punto central, un radio y una superposición de imágenes (en tu caso, un círculo transparente con una línea visible alrededor del borde) y se ocupa de todo lo demás, incluyendo el cambio de tamaño en acercar / alejar.