I'm utilizando a API do Google Maps e acrescentaram marcadores. Agora quero adicionar um raio de 10 milhas à volta de cada marcador, o que significa um círculo que se comporta adequadamente enquanto faz zoom. Não tenho ideia de como fazer isso e parece que'não é algo comum.
Encontrei um exemplo que parece bom, e também se pode dar uma vista de olhos ao Google Latitude. Aí utilizam marcadores com raio, tal como eu os quero.
Actualização: Google Latitude usa uma imagem que é escalada, como é que isso funcionaria?
Parece que o método mais comum para o conseguir é desenhar um GPolygon com pontos suficientes para simular um círculo. O exemplo a que se referiu utiliza este método. Esta página tem um bom exemplo - procure a função drawCircle no código-fonte.
Em geometria esférica, as formas são definidas por pontos, linhas e ângulos entre essas linhas. Só se tem de trabalhar com esses valores rudimentares.
Portanto, um círculo (em termos de uma forma projectada sobre uma esfera) é algo que deve ser aproximado utilizando pontos. Quanto mais pontos, mais ele'se parecerá com um círculo.
Dito isto, aperceber-se de que google maps é projectar a terra numa superfície plana (pensar "desenrolar" a terra e esticar" esticar" quadrado"). E se tiver um sistema de coordenadas planas pode desenhar objectos 2D sobre ela o que quiser.
Por outras palavras, você pode desenhar um círculo vectorial em escala num mapa do google. O senão é, o google maps não' não o dá fora da caixa (eles querem ficar o mais próximo possível dos valores GIS). Apenas lhe dão GPolygon que querem que utilize para aproximar um círculo. Contudo, este tipo fê-lo usando vml para IE e svg para outros navegadores (ver "SCALED CIRCLES" secção).
Agora, voltando à sua pergunta sobre o Google Latitude usando uma imagem de círculo em escala (e esta é provavelmente a mais útil para si): se souber que o raio do seu círculo nunca mudará (por exemplo it's sempre 10 milhas em torno de algum ponto), então a solução mais fácil seria usar um GGroundOverlay, que é apenas uma url de imagem + os GLatLngBounds que a imagem representa. O único trabalho que precisa de fazer então é caclatar o GLatLngBounds, representando o seu raio de 10 milhas. Uma vez isso, o google maps api trata de escalar a sua imagem à medida que o utilizador faz zoom in e out.
I'já tive este problema no passado, por isso marquei esta discussão.
Para o resumir, pode: