- Einführung
- Eigenschaften von Symbolen
- Vordefinierte Symbole
- Symbole zu Markierungen hinzufügen
- Symbole zu Polylinien hinzufügen
- Symbole animieren
Einführung
Ein Symbol
ist ein vektorbasiertes Symbol, das auf Marker
- oder Polyline
-Objekten angezeigt werden kann. Die Form des Symbols wird durch einen Pfad in der SVG-Pfadnotation definiert.
path
ist die einzige erforderliche Eigenschaft. Das Symbol
-Objekt unterstützt jedoch auch viele andere Eigenschaften, mit denen sich visuelle Aspekte wie die Farbe und Stärke des Strichs und die Füllung anpassen lassen. Die Liste der Eigenschaften finden Sie hier.
Über die Klasse SymbolPath
sind mehrere vordefinierte Symbole verfügbar. Hier finden Sie die entsprechende Liste.
Eigenschaften von Symbolen
Das Standardverhalten eines Symbol
-Objekts variiert geringfügig, je nachdem, ob es auf einer Markierung oder Polylinie verwendet wird. Die Abweichungen sind in der Liste der Eigenschaften unten beschrieben.
Ein Symbol
unterstützt die folgenden Eigenschaften:
path
(erforderlich) ist der Pfad, der die Form des Symbols definiert. Sie können einen der vordefinierten Pfade ingoogle.maps.SymbolPath
verwenden oder einen benutzerdefinierten Pfad mit der SVG-Pfadnotation definieren. Hinweis: Vektorpfade auf einer Polylinie müssen in ein 22 × 22 Pixel großes Quadrat passen. Wenn Ihr Pfad Punkte außerhalb dieses Quadrats umfasst, müssen Sie die Eigenschaftscale
des Symbols als Bruchwert angeben (z. B. „0.2“), damit die resultierenden skalierten Punkte in das Quadrat passen.anchor
definiert die Position des Symbols relativ zur Markierung oder Polylinie. Die Koordinaten des Symbolpfads werden um die x- und y-Koordinaten des Ankers nach links bzw. nach oben verschoben. Standardmäßig ist ein Symbol bei(0, 0)
verankert. Die Position wird im selben Koordinatensystem ausgedrückt wie der Pfad des Symbols.fillColor
ist die Farbe der Füllung des Symbols, das heißt der vom Strich umgebene Bereich. Alle CSS3-Farben werden unterstützt, mit Ausnahme von Farben mit erweiterten Namen. Für Symbole auf Markierungen ist der Standardwert „black“. Für Symbole auf Polylinien entspricht die Standardfarbe der Strichfarbe der jeweiligen Polylinie.fillOpacity
definiert die relative Deckkraft (fehlende Transparenz) der Füllung des Symbols. Die Werte reichen von „0.0“ (völlig transparent) bis „1.0“ (völlig undurchsichtig). Der Standardwert ist „0.0“.rotation
ist der Winkel, um den das Symbol gedreht werden soll. Der Wert wird im Uhrzeigersinn in Grad ausgedrückt. Bei Markierungen liegt er standardmäßig bei 0. Bei Polylinien wird das Symbol um den Winkel des Rands gedreht, an dem es liegt. Wenn Sie die Rotation eines Symbols auf einer Polylinie festlegen, wird die Rotation so fixiert, dass das Symbol nicht mehr der Linienführung folgt.scale
definiert den Wert für die Skalierung der Symbolgröße. Für Symbolmarkierungen ist der Standardwert „1“. Nach der Skalierung kann das Symbol eine beliebige Größe haben. Für Symbole auf Polylinien entspricht die Standardskalierung der Strichstärke der entsprechenden Polylinie. Nach der Skalierung muss das Symbol innerhalb eines Quadrats von 22 × 22 Pixel liegen, dessen Mittelpunkt der Anker des Symbols ist.strokeColor
ist die Farbe des Umrisses des Symbols. Alle CSS3-Farben werden unterstützt, mit Ausnahme von Farben mit erweiterten Namen. Für Symbole auf Markierungen ist der Standardwert „black“. Für Symbole auf Polylinien entspricht die Standardfarbe der Strichfarbe der Polylinie.strokeOpacity
definiert die relative Deckkraft (die fehlende Transparenz) des Strichs des Symbols. Die Werte reichen von „0.0“ (völlig transparent) bis „1.0“ (völlig undurchsichtig). Für Symbolmarkierungen ist der Standardwert „1.0“. Für Symbole auf Polylinien entspricht der Standardwert der Strichdeckkraft der Polylinie.strokeWeight
definiert die Stärke des Umrisses des Symbols. Der Standardwert ist derscale
-Wert des Symbols.
Vordefinierte Symbole
Die Google Maps JavaScript API bietet einige integrierte Symbole, die Sie über die Klasse SymbolPath
zu Markierungen oder Polylinien hinzufügen können.
Zu den Standardsymbolen gehören ein Kreis sowie Vorwärts- und Rückwärtspfeile. Dies ist insbesondere bei Polylinien hilfreich, da die Ausrichtung eines Symbols dort unveränderlich ist. Vorwärtspfeile zeigen in die Richtung des Endpunkts der Polylinie.
Sie können die Strichstärke oder die Füllung vordefinierter Symbole mithilfe der vorhandenen Standardsymboloptionen ändern.
Folgende vordefinierte Symbole sind verfügbar:
Name | Beschreibung | Beispiel |
---|---|---|
google.maps.SymbolPath.CIRCLE |
Ein Kreis | |
google.maps.SymbolPath.BACKWARD_CLOSED_ARROW |
Ein Rückwärtspfeil, der auf allen Seiten geschlossen ist | |
google.maps.SymbolPath.FORWARD_CLOSED_ARROW |
Ein Vorwärtspfeil, der auf allen Seiten geschlossen ist | |
google.maps.SymbolPath.BACKWARD_OPEN_ARROW |
Ein Rückwärtspfeil, der auf einer Seite offen ist | |
google.maps.SymbolPath.FORWARD_OPEN_ARROW |
Ein Vorwärtspfeil, der auf einer Seite offen ist |
Symbole zu Markierungen hinzufügen
Um ein vektorbasiertes Symbol auf einer Markierung anzuzeigen, übergeben Sie ein Symbol
-Objektliteral mit dem gewünschten Pfad an die Eigenschaft icon
der Markierung. Im folgenden Beispiel wird die SVG-Pfadnotation verwendet, um ein benutzerdefiniertes Symbol für eine Markierung zu erstellen.
TypeScript
// This example uses SVG path notation to add a vector-based symbol // as the icon for a marker. The resulting icon is a marker-shaped // symbol with a blue fill and no border. function initMap(): void { const center = new google.maps.LatLng(-33.712451, 150.311823); const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 9, center: center, } ); const svgMarker = { path: "M-1.547 12l6.563-6.609-1.406-1.406-5.156 5.203-2.063-2.109-1.406 1.406zM0 0q2.906 0 4.945 2.039t2.039 4.945q0 1.453-0.727 3.328t-1.758 3.516-2.039 3.070-1.711 2.273l-0.75 0.797q-0.281-0.328-0.75-0.867t-1.688-2.156-2.133-3.141-1.664-3.445-0.75-3.375q0-2.906 2.039-4.945t4.945-2.039z", fillColor: "blue", fillOpacity: 0.6, strokeWeight: 0, rotation: 0, scale: 2, anchor: new google.maps.Point(0, 20), }; new google.maps.Marker({ position: map.getCenter(), icon: svgMarker, map: map, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example uses SVG path notation to add a vector-based symbol // as the icon for a marker. The resulting icon is a marker-shaped // symbol with a blue fill and no border. function initMap() { const center = new google.maps.LatLng(-33.712451, 150.311823); const map = new google.maps.Map(document.getElementById("map"), { zoom: 9, center: center, }); const svgMarker = { path: "M-1.547 12l6.563-6.609-1.406-1.406-5.156 5.203-2.063-2.109-1.406 1.406zM0 0q2.906 0 4.945 2.039t2.039 4.945q0 1.453-0.727 3.328t-1.758 3.516-2.039 3.070-1.711 2.273l-0.75 0.797q-0.281-0.328-0.75-0.867t-1.688-2.156-2.133-3.141-1.664-3.445-0.75-3.375q0-2.906 2.039-4.945t4.945-2.039z", fillColor: "blue", fillOpacity: 0.6, strokeWeight: 0, rotation: 0, scale: 2, anchor: new google.maps.Point(0, 20), }; new google.maps.Marker({ position: map.getCenter(), icon: svgMarker, map: map, }); } window.initMap = initMap;
Testbeispiel
Symbole zu Polylinien hinzufügen
Um Symbole auf einer Polylinie anzuzeigen, müssen Sie die Eigenschaft icons[]
des PolylineOptions
-Objekts festlegen. Das icons[]
-Array kann ein oder mehrere IconSequence
-Objektliterale mit folgenden Eigenschaften enthalten:
icon
(erforderlich) ist das Symbol, das auf der Linie gerendert werden soll.offset
definiert den Abstand vom Anfang der Linie, in dem ein Symbol gerendert werden soll. Er kann als Prozentsatz der Linienlänge (z. B. „50 %“) oder in Pixeln (z. B. „50 px“) ausgedrückt werden. Der Standardwert ist „100 %“.repeat
definiert den Abstand zwischen zwei aufeinanderfolgenden Symbolen auf der Linie. Er kann als Prozentsatz der Linienlänge (z. B. „50 %“) oder in Pixeln (z. B. „50 px“) ausgedrückt werden. Wenn das Symbol nicht wiederholt werden soll, geben Sie „0“ an. Der Standardwert ist „0“.
Mit einer Kombination aus Symbolen und der Klasse PolylineOptions
lässt sich die Darstellung und das Verhalten von Polylinien auf Karten gut steuern.
Nachfolgend finden Sie einige Beispiele für Anpassungen, die Sie vornehmen können.
Pfeile
Mit der Eigenschaft IconSequence.offset
können Sie Pfeile am Anfang oder Ende der Polylinie einfügen.
// Define a symbol using a predefined path (an arrow) // supplied by the Google Maps JavaScript API. var lineSymbol = { path: google.maps.SymbolPath.FORWARD_CLOSED_ARROW }; // Create the polyline and add the symbol via the 'icons' property. var line = new google.maps.Polyline({ path: [{lat: 22.291, lng: 153.027}, {lat: 18.291, lng: 153.027}], icons: [{ icon: lineSymbol, offset: '100%' }], map: map });
Gestrichelte Linien
Sie können einen gestrichelten Linieneffekt erzielen, indem Sie die Deckkraft Ihrer Polylinie auf „0“ setzen und in regelmäßigen Abständen ein undurchsichtiges Symbol über die Linie legen.
// Define a symbol using SVG path notation, with an opacity of 1. var lineSymbol = { path: 'M 0,-1 0,1', strokeOpacity: 1, scale: 4 }; // Create the polyline, passing the symbol in the 'icons' property. // Give the line an opacity of 0. // Repeat the symbol at intervals of 20 pixels to create the dashed effect. var line = new google.maps.Polyline({ path: [{lat: 22.291, lng: 153.027}, {lat: 18.291, lng: 153.027}], strokeOpacity: 0, icons: [{ icon: lineSymbol, offset: '0', repeat: '20px' }], map: map });
Benutzerdefinierte Pfade
Mithilfe von benutzerdefinierten Symbolen lassen sich viele verschiedene Formen zu einer Polylinie hinzufügen.
// Define the custom symbols. All symbols are defined via SVG path notation. // They have varying stroke color, fill color, stroke weight, // opacity and rotation properties. var symbolOne = { path: 'M -2,0 0,-2 2,0 0,2 z', strokeColor: '#F00', fillColor: '#F00', fillOpacity: 1 }; var symbolTwo = { path: 'M -1,0 A 1,1 0 0 0 -3,0 1,1 0 0 0 -1,0M 1,0 A 1,1 0 0 0 3,0 1,1 0 0 0 1,0M -3,3 Q 0,5 3,3', strokeColor: '#00F', rotation: 45 }; var symbolThree = { path: 'M -2,-2 2,2 M 2,-2 -2,2', strokeColor: '#292', strokeWeight: 4 }; // Create the polyline and add the symbols via the 'icons' property. var line = new google.maps.Polyline({ path: [{lat: 22.291, lng: 153.027}, {lat: 18.291, lng: 153.027}], icons: [ { icon: symbolOne, offset: '0%' }, { icon: symbolTwo, offset: '50%' }, { icon: symbolThree, offset: '100%' } ], map: map });
Symbole animieren
Symbole können entlang eines Pfads animiert werden. Dazu verwenden Sie die Funktion window.setInterval()
des DOM, um den Abstand des Symbols in festen Intervallen zu ändern.
TypeScript
// This example adds an animated symbol to a polyline. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: { lat: 20.291, lng: 153.027 }, zoom: 6, mapTypeId: "terrain", } ); // Define the symbol, using one of the predefined paths ('CIRCLE') // supplied by the Google Maps JavaScript API. const lineSymbol = { path: google.maps.SymbolPath.CIRCLE, scale: 8, strokeColor: "#393", }; // Create the polyline and add the symbol to it via the 'icons' property. const line = new google.maps.Polyline({ path: [ { lat: 22.291, lng: 153.027 }, { lat: 18.291, lng: 153.027 }, ], icons: [ { icon: lineSymbol, offset: "100%", }, ], map: map, }); animateCircle(line); } // Use the DOM setInterval() function to change the offset of the symbol // at fixed intervals. function animateCircle(line: google.maps.Polyline) { let count = 0; window.setInterval(() => { count = (count + 1) % 200; const icons = line.get("icons"); icons[0].offset = count / 2 + "%"; line.set("icons", icons); }, 20); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example adds an animated symbol to a polyline. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { center: { lat: 20.291, lng: 153.027 }, zoom: 6, mapTypeId: "terrain", }); // Define the symbol, using one of the predefined paths ('CIRCLE') // supplied by the Google Maps JavaScript API. const lineSymbol = { path: google.maps.SymbolPath.CIRCLE, scale: 8, strokeColor: "#393", }; // Create the polyline and add the symbol to it via the 'icons' property. const line = new google.maps.Polyline({ path: [ { lat: 22.291, lng: 153.027 }, { lat: 18.291, lng: 153.027 }, ], icons: [ { icon: lineSymbol, offset: "100%", }, ], map: map, }); animateCircle(line); } // Use the DOM setInterval() function to change the offset of the symbol // at fixed intervals. function animateCircle(line) { let count = 0; window.setInterval(() => { count = (count + 1) % 200; const icons = line.get("icons"); icons[0].offset = count / 2 + "%"; line.set("icons", icons); }, 20); } window.initMap = initMap;