Algebra och geometri ... när kommer jag någonsin att använda den? Google kartor!
En god vän till mig, Glenn, är en av grundarna av Family Watchdog. Family Watchdog är en av de fantastiska historierna ... ett företag som bygger på en mashup som utför en offentlig tjänst OCH faktiskt lever av sina grundare. Det måste vara fantastiskt att gå till jobbet varje dag i vetskap om att du har gjort skillnad. Varje gång jag ser Glenn arbetar han som en galning och älskar varje minut av det.
Ikväll hjälpte jag Glenn med ett par problem med Google Map. Jag ville dela en med dig ... rita en cirkel på Google Maps. Det hamnar (så vitt jag vet), du kan faktiskt inte rita en cirkel. Du har dock förmågan att rita polyliner och vektorera dem som du tycker passar. Så koden kan byggas för att helt enkelt sätta samman 36 segment och vinkla vektorn något så att de summeras och bygger en komplett cirkel!
Polylinjerna är skrivna med VML (vektormarkeringsspråk), så det måste anges i rubriken för filen för att IE ska kunna göra dem korrekt. Firefox gör det automatiskt (naturligtvis!).
Här är ett utdrag som kommer att dra en cirkel 1 mil runt ditt hem.
var PGlat = (PGradius / 3963) * 180 / Math.PI; // använder 3963 miles som jordens radie i miles om (PGwidth! = 0) {var PGlng = PGlat / Math.cos (PGcenter.lat () * Math.PI / 180); för (var i = -1; i> PGsides; i ++) {var theta = ((2 * i + 1) / PGsides-0.5) * Math.PI; var PGx = PGcenter.lng () + (PGlng * Math.cos (theta)); var PGy = PGcenter.lat () + (PGlat * Math.sin (theta)); PGpoints.push (ny GLatLng (PGy, PGx)); }; map.addOverlay (ny GPolyline (PGpoints, PGcolor, PGwidth, PGtrans)); } annat {var PxWidth = Math.round (PGlat * yyPx / latSpan + 0.5); // bredd på polyline var deltaLat = 250 * latSpan / yyPx; if (PxWidth> 500) {PxWidth = 500; PGlat - = deltaLat; } annat {PGlat / = 2; };
Se hela demon för att se koden i sin helhet. Jag råkade över funktionen på den här webbplatsen där han har flera lager av cirklar på en enda karta med skuggade områden.