JavaScript-zelfstudie - Google Maps

Inhoudsopgave

Er zijn gevallen waarin de pagina of website deze functionaliteit moet uitbreiden en Google maps biedt deze niet. Bij deze gelegenheden kunnen we gebruik maken van Polykaarten, een boekenwinkel Javascript gratis en open source waarmee we kaarten van elk type en elke functionaliteit op onze website kunnen implementeren.

Polymaps is ideaal voor het weergeven van informatie op verschillende niveaus van landen, steden en zelfs individuele straten, dit dankzij de technologie van Svg (Schaalbare vectorafbeeldings) wat niets meer is dan een gevectoriseerd beeldformaat gebaseerd op XML die ondersteuning biedt voor de interactie en animatie van tweedimensionale afbeeldingen, al gezien dat het een beetje gaat Polykaarten Laten we de methoden, controles en enkele voorbeelden van de implementatie ervan bekijken.

Instantiëren van Polymaps
Elk Polymap begint met een instantie van de methode kaart (), maar voordat we een kaart bouwen, importeren we de naamruimte in een lokale variabele:
var po = org.polymaps;

Polymaps gebruikt geen traditionele Javascript-constructors, in dat geval biedt Polymaps ons methoden die de methoden intern instantiëren. Bovendien gebruikt het methodeketen, alle methoden retourneren de map () -instantie. We kunnen ook invoegen in een nieuw SVG-document en vervolgens een tag aan de afbeelding toevoegen:

 var map = po.map () .container (document.body.appendChild (po.svg ("svg"))) .add (po.image (). url (…)) 
We kunnen ook niets verzenden in de methode van container en de kaartinstantie retourneert de waarde die aan het veld is gekoppeld en dient als zowel een setter als een getter:
 kaart.container ();
Lagen
In de eenvoudigste gevallen hebben de kaarten een enkele laag, maar ze kunnen bestaan ​​uit meerdere lagen die op elkaar liggen, de geaccepteerde parameters zijn de volgende:
  • {X} - Kolomcoördinaat.
  • {Y} - Rijcoördinaat.
  • {B} - Begrenzingsvak.
  • {Z} - Zoomniveau.
  • {S} - Gastheer.
Laten we, na het algemene concept te hebben gezien, de voorbeelden met hun volledige implementatiecode bekijken:

Bleke Dageraad
Deze kaart heeft een beperkt ontwerp dat goed werkt met tonnen informatiepunten, het is meer gericht op het markeren van de voorgrondinformatie. Deze kaart is gebouwd met een enkele laag, coördinaten en heeft enkele basis interactieve bedieningselementen, het is een goed startpunt om te beginnen met het aanpassen ervan:

Hier de volledige broncode:

 var po = org.polymaps; 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 surprise/[Y-lex.europa.eu.png.webp ") .hosts ([" a. "," B. "," C. "," "] ))); map.add (po.compass () .pan ("geen")); 
Laten we nu een veel completer voorbeeld bekijken

Tegelraster


In dit voorbeeld hebben we verschillende soorten zoom, evenals het beheer van verschillende lagen, bovendien kunnen we het gebied van de kaart roteren en zo andere gebieden erin kunnen zien, laten we enkele opnamen ervan bekijken:

En tot slot de broncode zodat je het zelf kunt uitproberen:

 var po = org.polymaps; var div = document.getElementById ("kaart"), 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 ("resize", resize) ; formaat wijzigen (); map.add (po.layer (raster)); var rect = g.appendChild (po.svg ("rect")); rect.setAttribute ("breedte", "50%"); rect.setAttribute ("hoogte", "50%"); functie resize () {if (resize.ignore) return; var x = div.clientWidth/2, y = div.clientHeight/2; g.setAttribute ("transform", "vertaal (" + (x / 2) + "," + (y / 2) + ")"); formaat wijzigen.ignore = waar; kaart.grootte ({x: x, y: y}); formaat wijzigen.ignore = false; } functieraster (tegel) {var g = tegel.element = po.svg ("g"); var rect = g.appendChild (po.svg ("rect")), size = map.tileSize (); rect.setAttribute ("breedte", grootte.x); rect.setAttribute ("hoogte", grootte.y); var tekst = g.appendChild (po.svg ("tekst")); tekst.setAttribuut ("x", 6); tekst.setAttribuut ("y", 6); text.setAttribute ("dy", ".71em"); text.appendChild (document.createTextNode (tile.key)); } var spin = 0; setInterval (functie () {if (spin) map.angle (map.angle () + spin);}, 30); functietoets (e) {schakelaar (e.keyCode) {geval 65: spin = e.type == "keydown"? -.004: 0; pauze; geval 68: spin = e.type == "keydown"? .004: 0; pauze; }} window.addEventListener ("keydown", key, true); window.addEventListener ("keyup", key, true); window.addEventListener ("resize", resize, false); 

Vond je deze tutorial leuk en hielp je hem?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven
wave wave wave wave wave