- Wprowadzenie
- Właściwości symbolu
- Symbole wstępnie zdefiniowane
- Dodawanie symbolu do znacznika
- Dodawanie symbolu do polilinii
- Animowanie symbolu
Wprowadzenie
  Symbol to ikona wektorowa, która może być wyświetlana na obiekcie Marker lub Polyline. Kształt symbolu jest zdefiniowany przez ścieżkę w notacji ścieżki SVG.
  Chociaż właściwość path jest jedyną wymaganą właściwością, obiekt Symbol obsługuje wiele innych właściwości, które umożliwiają dostosowywanie aspektów wizualnych, takich jak kolor i grubość obrysu oraz wypełnienie. Zobacz listę właściwości.
W klasie SymbolPathdostępnych jest kilka wstępnie zdefiniowanych symboli. Ich listę znajdziesz poniżej.
Właściwości symbolu
Pamiętaj, że domyślne działanie elementu Symbol różni się nieznacznie w zależności od tego, czy pojawia się on na znaczniku czy na polilinie. Te różnice zostały opisane na liście właściwości poniżej.
Symbol obsługuje te właściwości:
- path(wymagany) to ścieżka definiująca kształt symbolu. Możesz użyć jednej z wstępnie zdefiniowanych ścieżek w- google.maps.SymbolPathlub zdefiniować ścieżkę niestandardową za pomocą notacji ścieżki SVG. Uwaga: wektorowe ścieżki na linii łamanej muszą mieścić się w kwadracie o wymiarach 22 x 22 piksele. Jeśli ścieżka zawiera punkty poza tym kwadratem, musisz dostosować właściwości symbolu- scaledo wartości ułamkowej, np.0,2, aby uzyskane punkty po skalowaniu mieściły się w kwadracie.
- anchorustawia pozycję symbolu względem znacznika lub linii łamanej. Współrzędne ścieżki symbolu są przesunięte w górę i w lewo o odpowiednio współrzędne x i y kotwicy. Domyślnie symbol jest zakotwiczony na poziomie- (0, 0). Pozycja jest wyrażona w tym samym układzie współrzędnych co ścieżka symbolu.
- fillColorto kolor wypełnienia symbolu (czyli regionu ograniczonego przez kreskę). Obsługiwane są wszystkie kolory CSS3 z wyjątkiem rozszerzonych kolorów o nazwie. Domyślny kolor symboli na znacznikach to „czarny”. W przypadku symboli na liniach łamanych domyślnie jest używany kolor obrysu odpowiadającej linii łamanej.
- fillOpacityokreśla względną przezroczystość (czyli brak przezroczystości) wypełnienia symbolu. Wartości mieszczą się w zakresie od 0,0 (przezroczystość) do 1,0 (nieprzezroczystość). Wartość domyślna to 0,0.
- rotationto kąt obrotu symbolu wyrażony w stopniach zgodnie z ruchem wskazówek zegara. Domyślnie obrót znacznika symbolu wynosi 0, a symbol na polilinii jest obracany o kąt krawędzi, na której się znajduje. Ustawienie rotacji symbolu na polilinii spowoduje, że symbol nie będzie już podążać za krzywizną linii.
- scaleokreśla, o ile zmniejszyć rozmiar symbolu. W przypadku znaczników symboli domyślna skala to 1. Po skalowaniu symbol może mieć dowolny rozmiar. W przypadku symboli na polilinii domyślna skala to grubość obrysu polilinii. Po skalowaniu symbol musi mieścić się w kwadracie o wymiarach 22 x 22 piksele, a jego punkt kotwiczenia musi być wyśrodkowany.
- strokeColorto kolor obrysu symbolu. Obsługiwane są wszystkie kolory CSS3 z wyjątkiem rozszerzonych kolorów nazwanych. Domyślny kolor symboli na znacznikach to „czarny”. W przypadku symboli na polilinie domyślnym kolorem jest kolor obrysu polilinii.
- strokeOpacityokreśla względną przezroczystość (czyli brak przezroczystości) obrysu symbolu. Wartości mieszczą się w zakresie od 0,0 (przezroczystość) do 1,0 (nieprzezroczystość). W przypadku znaczników symboli domyślna wartość to 1, 0. W przypadku symboli na liniach łamanych domyślnie jest używana krycie obrysu linii.
- strokeWeightokreśla grubość obrysu symbolu. Wartość domyślna to- scalesymbolu.
Symbole wstępnie zdefiniowane
Interfejs Maps JavaScript API udostępnia kilka wbudowanych symboli, które możesz dodawać do znaczników lub polilinii za pomocą klasy 
  SymbolPath.
Domyślne symbole to koło i 2 typy strzałek. Dostępne są strzałki skierowane do przodu i do tyłu. Jest to szczególnie przydatne w przypadku polilinii, ponieważ orientacja symbolu na polilinii jest stała. Kierunek do przodu to kierunek do punktu końcowego linii łamanej.
Możesz zmodyfikować obrys lub wypełnienie wstępnie zdefiniowanych symboli, korzystając z dowolnych domyślnych opcji symboli.
Dostępne są te wstępnie zdefiniowane symbole:
| Nazwa | Opis | Przykład | 
|---|---|---|
| google.maps.SymbolPath.CIRCLE | okrąg, |  | 
| google.maps.SymbolPath.BACKWARD_CLOSED_ARROW | Strzałka skierowana wstecz, zamknięta ze wszystkich stron. |   | 
| google.maps.SymbolPath.FORWARD_CLOSED_ARROW | Strzałka skierowana do przodu, zamknięta ze wszystkich stron. |   | 
| google.maps.SymbolPath.BACKWARD_OPEN_ARROW | Strzałka skierowana wstecz, która jest otwarta z jednej strony. |   | 
| google.maps.SymbolPath.FORWARD_OPEN_ARROW | Strzałka skierowana w przód, otwarta z jednej strony. |   | 
Dodawanie symbolu do znacznika
Aby wyświetlić ikonę wektorową na markerze, prześlij literał obiektu Symbol z żądaną ścieżką do właściwości icon markera. W tym przykładzie do utworzenia niestandardowej ikony znacznika użyto notacji ścieżki SVG.
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;
Wypróbuj próbkę
Dodawanie symbolu do linii łamanej
Aby wyświetlić symbole na polilinii, ustaw właściwość icons[] obiektu PolylineOptions. Tablica icons[] przyjmuje co najmniej 1 wartość dosłowną obiektu 
  IconSequence z tymi właściwościami:
- icon(wymagany) to symbol do wyrenderowania na linii.
- offsetokreśla odległość od początku linii, w której ma zostać wyrenderowana ikona. Odległość może być wyrażona jako odsetek długości linii (np. „50%”) lub w pikselach (np. „50 px”). Wartość domyślna to „100%”.
- repeatokreśla odległość między kolejnymi ikonami na linii. Odległość może być wyrażona jako procent długości linii (np. „50%”) lub w pikselach (np. „50 px”). Aby wyłączyć powtarzanie ikony, użyj wartości „0”. Wartość domyślna to „0”.
Dzięki kombinacji symboli i klasy PolylineOptions masz dużą kontrolę nad wyglądem i wygodą korzystania z wielokątów na mapie.
  Poniżej znajdziesz kilka przykładów dostosowań, które możesz zastosować.
Strzałki
Użyj właściwości IconSequence.offset, aby dodać strzałki na początku lub na końcu polilinii.
// 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 });
Linie przerywane
Aby uzyskać efekt przerywanej linii, ustaw przezroczystość polilinii na 0, a następnie nakładaj na nią nieprzezroczysty symbol w regularnych odstępach.
// 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 });
Ścieżki niestandardowe
Symbole niestandardowe umożliwiają dodawanie do polilinii wielu różnych kształtów.
// 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 });
Animowanie symbolu
Możesz animować symbol na ścieżce, używając funkcji window.setInterval() w DOM, aby zmieniać przesunięcie symbolu w określonych odstępach czasowych.
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;