Zakładając, że mapa jest Google Maps, używają projekcji Mercator, więc musisz użyć jej do konwersji. W projekcji Mercator odległość, którą piksel reprezentuje w metrach, zmienia się wraz z szerokością geograficzną, więc gdy licznik jest bardzo małą odległością w stosunku do promienia Ziemi, szerokość geograficzna jest ważna.
Wszystkie poniższe przykłady to javascript, więc może być konieczne przetłumaczenie ich.
Oto ogólnego wyjaśnienia układu współrzędnych:
http://code.google.com/apis/maps/documentation/javascript/maptypes.html#WorldCoordinates
Przykład zawiera obiekt odwzorowanie walcowe równokątne, który obejmuje metody fromLatLngToPoint() i fromPointToLatLng():
http://code.google.com/apis/maps/documentation/javascript/examples/map-coordinates.html
Po konwersji (x, y) na (lat, lon), tak narysujesz okrąg:
// Pseudo code
var d = radius/6378800; // 6378800 is Earth radius in meters
var lat1 = (PI/180)* centerLat;
var lng1 = (PI/180)* centerLng;
// Go around a circle from 0 to 360 degrees, every 10 degrees
for (var a = 0 ; a < 361 ; a+=10) {
var tc = (PI/180)*a;
var y = asin(sin(lat1)*cos(d)+cos(lat1)*sin(d)*cos(tc));
var dlng = atan2(sin(tc)*sin(d)*cos(lat1),cos(d)-sin(lat1)*sin(y));
var x = ((lng1-dlng+PI) % (2*PI)) - PI ;
var lat = y*(180/PI);
var lon = x*(180/PI);
// Convert the lat and lon to pixel (x,y)
}
Te dwa mashups narysować okrąg o danym promieniu na powierzchni Ziemi:
http://maps.forum.nu/gm_sensitive_circle2.html
http://maps.forum.nu/gm_drag_polygon.html
Jeśli zdecydujesz się zignorować projekcję wtedy byłoby użyć współrzędnych kartezjańskich i po prostu narysuj okrąg za pomocą Twierdzenia Pitagorasa:
http://en.wikipedia.org/wiki/Circle#Cartesian_coordinates
jeśli chcesz przekonwertować 1 metr na dwa piksele, a chcesz mieć promień 1 metra, to chcesz przekazać '2' do parametru' promień'. Teraz mówisz, że * zależy od poziomu powiększenia *, więc myślę, że będziesz musiał podać coś w rodzaju '2 * (zoomLevel * zoomLevelCoefficient)' –
To było interesujące pytanie, czy znalazłeś rozwiązanie, które zadziałało dla ciebie? – Idistic