Jeg' bruker Google Maps API og har lagt til markører. Nå vil jeg legge til en radius på 10 mil rundt hver markør, det vil si en sirkel som oppfører seg riktig når jeg zoomer. Jeg aner ikke hvordan jeg gjør det, og det ser ut til at det ikke er noe vanlig.
Jeg fant et eksempel som ser bra ut, og du kan også ta en titt på Google Latitude. Der bruker de markører med en radius, akkurat slik jeg vil ha dem.
Oppdatering: Google Latitude bruker et bilde som er skalert, hvordan fungerer det?
Det ser ut til at den vanligste metoden for å oppnå dette er å tegne en GPolygon med nok punkter til å simulere en sirkel. Eksemplet du refererte til, bruker denne metoden. Denne siden har et godt eksempel - se etter funksjonen drawCircle i kildekoden.
I sfærisk geometri defineres former av punkter, linjer og vinkler mellom disse linjene. Du har bare disse rudimentære verdiene å jobbe med.
Derfor er en sirkel (i form av en form projisert på en sfære) noe som må tilnærmes ved hjelp av punkter. Jo flere punkter, desto mer ligner det på en sirkel.
Når det er sagt, er det viktig å være klar over at google maps projiserer jorden på en flat overflate (tenk "rull ut" jorden og strekk den ut til den ser "firkantet" ut). Og hvis du har et flatt koordinatsystem, kan du tegne 2D-objekter på det så mye du vil.
Med andre ord kan du tegne en skalert vektorsirkel på et google map. Haken er bare at google maps ikke gir deg det med en gang (de ønsker å holde seg så nær GIS-verdiene som praktisk mulig). De gir deg bare GPolygon, som de vil at du skal bruke til å tilnærme deg en sirkel. Men denne fyren gjorde det ved hjelp av vml for IE og svg for andre nettlesere (se avsnittet "SKALERTE SIRKLER").
For å gå tilbake til spørsmålet ditt om Google Latitude ved hjelp av et skalert sirkelbilde (og dette er sannsynligvis det mest nyttige for deg): Hvis du vet at sirkelens radius aldri vil endre seg (f.eks. at den alltid er 16 km rundt et eller annet punkt), er den enkleste løsningen å bruke et GGroundOverlay, som bare er en bilde-url + GLatLngBounds som bildet representerer. Det eneste du trenger å gjøre da, er å koble sammen GLatLngBounds som representerer en radius på 15 km. Når du har det, håndterer google maps api skalering av bildet når brukeren zoomer inn og ut.
Jeg har hatt dette problemet tidligere, så jeg bokmerket denne diskusjonen.
For å oppsummere det, kan du: