Dibujar un radio alrededor de un punto en el mapa de Google

Estoy utilizando la API de Google Maps y he añadido marcadores. Ahora quiero añadir un radio de 10 millas alrededor de cada marcador, es decir, un círculo que se comporte adecuadamente al hacer zoom. No tengo ni idea de cómo hacerlo y parece que no es algo habitual.

He encontrado un ejemplo que tiene buena pinta, y también puedes echar un vistazo a Google Latitude. Allí usan marcadores con un radio, justo como yo los quiero.

Actualización: Google Latitude utiliza una imagen escalada, ¿cómo funcionaría?

Parece que el método más común para conseguirlo es dibujar un GPolygon con suficientes puntos para simular un círculo. El ejemplo al que haces referencia utiliza este método. Esta página tiene un buen ejemplo - busque la función drawCircle en el código fuente.

Comentarios (1)

En geometría esférica, las formas se definen por puntos, líneas y ángulos entre esas líneas. Sólo tienes esos valores rudimentarios para trabajar.

Por tanto, un círculo (en términos de una forma proyectada sobre una esfera) es algo que debe aproximarse mediante puntos. Cuantos más puntos, más se parecerá a un círculo.

Dicho esto, hay que tener en cuenta que google maps está proyectando la tierra sobre una superficie plana (piensa en "desenrollar" la tierra y estirarla+aplanarla hasta que parezca "cuadrada"). Y si tienes un sistema de coordenadas plano, puedes dibujar objetos 2D en él todo lo que quieras.

En otras palabras, puedes dibujar un círculo vectorial a escala en un mapa de Google. La captura es, google maps doesn't darle a usted fuera de la caja (que quieren permanecer lo más cerca posible a los valores de SIG como es pragmáticamente posible). Sólo te dan GPolygon que quieren que utilices para aproximar un círculo. Sin embargo, este chico lo hizo utilizando vml para IE y svg para otros navegadores (ver "CÍRCULOS ESCALADOS" sección).

Ahora, volviendo a tu pregunta sobre Google Latitude usando una imagen circular escalada (y esto es probablemente lo más útil para ti): si sabes que el radio de tu círculo nunca cambiará (por ejemplo, siempre está a 10 millas alrededor de algún punto), entonces la solución más fácil sería usar un GGroundOverlay, que es sólo una url de imagen + el GLatLngBounds que la imagen representa. El único trabajo que hay que hacer entonces es cacluate el GLatLngBounds que representa su radio de 10 millas. Una vez que tengas eso, la api de google maps se encarga de escalar tu imagen a medida que el usuario se acerca o aleja.

Comentarios (1)

He tenido este problema en el pasado, así que me he marcado esta discusión.

Para resumirlo, puedes

  1. Echar un vistazo al código fuente de este filtro de círculo'y averiguar cómo incorporarlo a tu proyecto.
  2. Dibuja un GPolígono con suficientes puntos para simular un círculo.
  3. Genera un archivo KML modificando http://www.nearby.org.uk/google/circle.kml.php?radius=30miles&lat=40.173&long=-105.1024 y luego impórtalo. En Google Maps, basta con pegar el URI en el cuadro de búsqueda y se mostrará en el mapa. Sin embargo, no estoy seguro de cómo podría hacerlo utilizando la API.
Comentarios (0)