„JavaScript“ pamoka - „Google“ žemėlapiai

Kai kuriais atvejais puslapis ar svetainė turi išplėsti šią funkciją, o „Google“ žemėlapiai jos neteikia. Šiomis progomis galime pasinaudoti Polimapsai, knygynas Javascript nemokamas ir atviras šaltinis, kuriuo savo svetainėje galime įgyvendinti bet kokio tipo ir funkcionalumo žemėlapius.

Dėl savo technologijos „Polymaps“ idealiai tinka informacijai rodyti skirtinguose šalių, miestų ir net atskirų gatvių lygiuose Svg (Mastelio vektorinė grafikas), kuris yra ne kas kita, kaip vektorizuotas vaizdo formatas, pagrįstas XML kuris palaiko dvimatės grafikos sąveiką ir animaciją, jau matydamas, kad tai šiek tiek vyksta Polimapsai Pažvelkime į jo metodus, kontrolę ir keletą jo įgyvendinimo pavyzdžių.

Instituciniai polimapai
Kas Polymap prasideda nuo metodo egzemplioriaus žemėlapis (), bet prieš kurdami žemėlapį importuojame vardų sritį į vietinį kintamąjį:
var po = org.polimaps;

„Polymaps“ nenaudoja tradicinių „Javascript“ konstruktorių, tokiu atveju „Polymaps“ pateikia mums metodus, kurie išryškina metodus viduje. Be to, jis naudoja metodų susiejimą, visi metodai grąžina žemėlapio () egzempliorių. Taip pat galime įterpti į naują SVG dokumentą ir tada pridėti žymę prie vaizdo:

 var map = po.map () .container (document.body.appendChild (po.svg ("svg")))) .add (po.image (). url (…)) 
Mes taip pat negalime nieko siųsti šiuo metodu konteineris ir žemėlapio egzempliorius grąžins su lauku susietą vertę ir bus naudojamas kaip nustatytojas ir gavėjas:
 map.container ();
Sluoksniai
Paprasčiausiais atvejais žemėlapiai turi vieną sluoksnį, tačiau jie gali būti sudaryti iš kelių sluoksnių, kurie yra vienas ant kito, priimami šie parametrai:
  • {X} - stulpelio koordinatė.
  • {Y} - eilutės koordinatė.
  • {B} - ribojanti dėžutė.
  • {Z} - mastelio keitimo lygis.
  • {S} - šeimininkas.
Pamatę bendrą koncepciją, pažiūrėkime pavyzdžius su visu jų diegimo kodu:

Blyški aušra
Šis žemėlapis turi ribotą dizainą, kuris gerai veikia su daugybe informacijos taškų, jis labiau orientuotas į priekinės informacijos išryškinimą. Šis žemėlapis sudarytas iš vieno sluoksnio, koordinačių ir turi keletą pagrindinių interaktyvių valdiklių, todėl tai yra geras atspirties taškas pradėti jį tinkinti:

Čia yra visas šaltinio kodas:

 var po = org.polimaps; var map = po.map () .container (document.getElementById ("map"). appendChild (po.svg ("svg"))) .add (po.interact ()) .add (po.hash ()) ; map.add (po.image () .url (po.url ("http: // {S} tile.cloudmade.com" + "/1a1b06b230af4efdbb989ea99e9841af" // http://cloudmade.com/register + "/998 /256/{Z-lex.europa.eu/[X stebina/[Y-lex.europa.eu.png.webp ") .hosts ([" a. "," B. "," C. "," "] ))); map.add (po.compass () .pan ("nėra")); 
Dabar pažiūrėkime daug išsamesnį pavyzdį

Plytelių tinklelis


Šiame pavyzdyje mes turime įvairių tipų mastelio keitimą, taip pat valdome skirtingus sluoksnius, be to, galime pasukti žemėlapio plotą ir taip matyti kitas jo sritis, pažiūrėkime keletą jo vaizdų:

Ir galiausiai, šaltinio kodas, kad galėtumėte jį išbandyti patys:

 var po = org.polimaps; var div = document.getElementById ("žemėlapis"), svg = div.appendChild (po.svg ("svg")), g = svg.appendChild (po.svg ("g")); var map = po.map () .container (g) .tileSize ({x: 128, y: 128}) .angle (.3) .add (po.interact ()) .on ("keisti dydį", keisti dydį) ; keisti dydį (); map.add (po.layer (tinklelis)); var rect = g.appendChild (po.svg ("rect")); rect.setAttribute ("plotis", "50%"); rect.setAttribute ("aukštis", "50%"); function resize () {if (resize.ignore) return; var x = div.clientWidth / 2, y = div.clientHeight / 2; g.setAttribute ("transformuoti", "versti (" + (x / 2) + "," + (y / 2) + ")"); resize.ignore = tiesa; map.size ({x: x, y: y}); resize.ignore = false; } funkcijų tinklelis (plytelė) {var g = tile.element = po.svg ("g"); var rect = g.appendChild (po.svg ("rect")), dydis = map.tileSize (); rect.setAttribute ("plotis", dydis.x); rect.setAttribute ("aukštis", dydis.y); var tekstas = g.appendChild (po.svg ("tekstas")); text.setAttribute ("x", 6); text.setAttribute ("y", 6); text.setAttribute ("dy", ".71em"); text.appendChild (document.createTextNode (tile.key)); } var spin = 0; setInterval (function () {if (spin) map.angle (map.angle () + spin);}, 30); funkcinis klavišas (e) {jungiklis (e.keyCode) {65 atvejis: sukimas = e.type == "keydown"? -.004: 0; pertrauka; 68 atvejis: sukimas = e.type == "keydown"? .004: 0; pertrauka; }} window.addEventListener ("keydown", raktas, tiesa); window.addEventListener ("raktas", raktas, tiesa); window.addEventListener ("keisti dydį", keisti dydį, klaidinga); 

Ar jums patiko ir padėjo ši pamoka?Galite apdovanoti autorių paspausdami šį mygtuką, kad suteiktumėte jam teigiamą tašką
wave wave wave wave wave