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 muutnud. Iga kord, kui näen Glenni, töötab ta hullumeelselt ja armastab selle iga minutit.

Täna õhtul 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 jupp, 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 kuvamiseks vaadake kogu demo. Juhtusin selle saidi funktsioonis, kus tal on ühel kaardil mitu varjutatud piirkondadega ringjoont.

Mis sa arvad?

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