Algebra ja geomeetria ... millal ma seda kunagi kasutan? Google kaardid!

Screen Shot 2014 10 23 juures 3.24.52 PM

Minu hea sõber Glenn on üks Family Watchdogi asutajatest. Pere valvekoer on üks neist fantastilistest lugudest ... ettevõte, mis asutati avaliku teenuse osutamise ja tegelikult oma asutajatele elatist pakkuva mashupi peal. Hämmastav peab olema iga päev tööl käimine, teades, et oled midagi saavutanud. Iga kord, kui ma näen Glenni, töötab ta hullumeelselt ja armastab selle iga minutit.

Täna aitasin Glenni paari Google Mapi probleemiga. Tahtsin ühte teiega jagada ... joonistades Google Mapsis ringi. See kerib tuule üles (minu teada), tegelikult ei saa ringi joonistada. Kuid teil on võime joonistada joonjooni ja vektorida neid oma äranägemise järgi. Niisiis, koodi saab üles ehitada nii, et see lihtsalt paneb 36 segmenti kokku ja kergelt vektorit nurka, nii et need liituvad ja moodustavad täieliku ringi!

Liinijooned on kirjutatud VML (vektori märgistuskeel), seega tuleb see faili päises näidata, et IE neid korralikult renderdaks. Firefox teeb seda automaatselt (muidugi!).

Siin on väljavõte, mis tõmbab ringi 1 miili ümber teie kodu.

var PGlat = (PGradius / 3963) * 180 / Math.PI; // kasutades 3963 miili maa raadiusena miilides, kui (PGwidth! = 0) {var PGlng = PGlat / Math.cos (PGcenter.lat () * Math.PI / 180); for (var i = -1; i> PGsides; i ++) {var theta = ((2 * i + 1) / PGsides-0.5) * Math.PI; var PGx = PGcenter.lng () + (PGlng * Math.cos (teeta)); var PGy = PGcenter.lat () + (PGlat * Math.sin (teeta)); PGpoints.push (uus GLatLng (PGy, PGx)); }; map.addOverlay (uus GPolyline (PGpoints, PGcolor, PGwidth, PGtrans)); } else {var PxWidth = Math.round (PGlat * yyPx / latSpan + 0.5); // sirgjoone laius var deltaLat = 250 * latSpan / yyPx; kui (PxWidth> 500) {PxWidth = 500; PGlat - = deltaLat; } muu {PGlat / = 2; };

Koodi täielikuks nägemiseks vaadake kogu demo. Juhtusin selle saidi funktsioonis, kus tal on ühel kaardil varjutatud piirkondadega mitu kihti ringe.

Mis sa arvad?

Sellel saidil kasutatakse rämpsposti vähendamiseks Akismetit. Vaadake, kuidas teie andmeid töödeldakse.