- Pengantar
- Properti simbol
- Simbol yang sudah ditentukan
- Menambahkan simbol ke penanda
- Menambahkan simbol ke polyline
- Menganimasikan simbol
Pengantar
Symbol adalah ikon berbasis vektor yang dapat ditampilkan pada objek
Marker atau
Polyline
. Bentuk simbol ditentukan oleh jalur menggunakan
notasi jalur SVG.
Meskipun path adalah satu-satunya properti yang diperlukan, objek Symbol mendukung berbagai properti yang memungkinkan Anda menyesuaikan aspek visual, seperti warna serta ketebalan goresan dan isian. Lihat daftar properti.
Beberapa simbol yang telah ditetapkan tersedia melalui class
SymbolPath. Lihat daftar di bawah.
Properti simbol
Perhatikan bahwa perilaku default Symbol sedikit berbeda
bergantung pada apakah simbol muncul di penanda atau polyline. Varian-varian ini
dijelaskan dalam daftar properti di bawah ini.
Symbol mendukung properti berikut:
path(diperlukan) adalah jalur yang menentukan bentuk simbol. Anda dapat menggunakan salah satu jalur yang telah ditetapkan digoogle.maps.SymbolPathatau menetapkan jalur kustom menggunakan notasi jalur SVG. Jalur vektor pada polyline harus muat dalam 22x22 px persegi. Jika jalur Anda menyertakan titik di luar persegi ini, Anda harus menyesuaikan propertiscalesimbol ke nilai pecahan, seperti 0,2, sehingga titik berskala yang dihasilkan dapat muat dalam persegi ini.anchormenetapkan posisi simbol sesuai dengan penanda atau polyline. Koordinat jalur simbol masing-masing diterjemahkan ke kiri dan ke atas berdasarkan koordinat x dan y anchor. Secara default, simbol ditambatkan pada(0, 0). Posisi dinyatakan dalam sistem koordinat yang sama seperti jalur simbol tersebut.fillColoradalah warna pengisi simbol (yaitu, wilayah yang dibatasi dengan goresan). Semua warna CSS3 didukung, kecuali tambahan warna yang dinamai. Untuk simbol pada penanda, defaultnya adalah 'hitam'. Untuk simbol pada polyline, defaultnya adalah warna goresan polyline yang bersangkutan.fillOpacitymendefinisikan opasitas relatif (yaitu, kurangnya transparansi) dari pengisi simbol. Nilainya berkisar dari 0.0 (sepenuhnya transparan) hingga 1.0 (sepenuhnya tidak tembus pandang). Nilai defaultnya adalah 0.0.rotationadalah sudut yang digunakan untuk memutar simbol, yang dinyatakan searah jarum jam dalam derajat. Secara default, penanda simbol memiliki rotasi 0, dan simbol pada polyline diputar oleh sudut dari tepi letaknya. Menentukan rotasi simbol pada polyline akan menetapkan rotasi simbol sedemikian rupa, sehingga tidak lagi mengikuti lekuk garis.scalemenetapkan jumlah yang digunakan untuk menskalakan ukuran simbol. Untuk penanda simbol, skala defaultnya adalah 1. Setelah penskalaan, ukuran simbol bisa berapa saja. Untuk simbol pada polyline, skala defaultnya adalah bobot goresan polyline. Setelah penskalaan, simbol harus diletakkan di dalam persegi 22x22 piksel, yang berpusat di titik tambatan simbol tersebut.strokeColoradalah warna garis batas simbol. Semua warna CSS3 didukung, kecuali tambahan warna yang dinamai. Untuk simbol pada penanda, warna defaultnya adalah 'hitam'. Untuk simbol di polyline, warna defaultnya adalah warna goresan polyline.strokeOpacitymenentukan opasitas relatif (yaitu, kurangnya transparansi) goresan simbol. Nilainya berkisar dari 0.0 (sepenuhnya transparan) hingga 1.0 (sepenuhnya tidak tembus pandang). Untuk penanda simbol, nilai defaultnya adalah 1.0. Untuk simbol di polyline, defaultnya adalah opasitas goresan polyline.strokeWeightmenentukan bobot garis batas simbol. Nilai defaultnya adalahscalesimbol.
Simbol yang sudah ditentukan
Maps JavaScript API menyediakan beberapa simbol bawaan yang dapat Anda tambahkan ke penanda atau polyline melalui class SymbolPath.
Simbol default berisi sebuah lingkaran dan dua jenis panah. Tersedia panah yang menghadap ke depan dan ke belakang. Hal ini khususnya berguna untuk polyline, karena orientasi simbol pada polyline adalah tetap. Panah yang menghadap ke depan dianggap sebagai arah ujung polyline.
Anda dapat memodifikasi goresan atau pengisi simbol yang sudah ditentukan dengan salah satu opsi simbol default.
Simbol yang sudah ditentukan berikut ini telah disertakan:
| Nama | Deskripsi | Contoh |
|---|---|---|
google.maps.SymbolPath.CIRCLE |
Lingkaran. | ![]() |
google.maps.SymbolPath.BACKWARD_CLOSED_ARROW |
Panah menunjuk ke belakang yang tertutup pada semua sisinya. |
|
google.maps.SymbolPath.FORWARD_CLOSED_ARROW |
Panah menunjuk ke depan yang tertutup pada semua sisinya. |
|
google.maps.SymbolPath.BACKWARD_OPEN_ARROW |
Panah menunjuk ke belakang yang terbuka pada satu sisi. |
|
google.maps.SymbolPath.FORWARD_OPEN_ARROW |
Panah menunjuk ke depan yang terbuka pada satu sisi. |
|
Menambahkan simbol ke penanda
Untuk menampilkan ikon berbasis vektor di penanda, teruskan literal objek Symbol dengan jalur yang diinginkan ke properti icon penanda. Contoh berikut menggunakan
notasi jalur SVG
untuk membuat ikon khusus bagi penanda.
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;
Mencoba Contoh
Menambahkan simbol ke polyline
Untuk menampilkan simbol di polyline, tetapkan properti icons[] dari objek PolylineOptions. Array icons[] menggunakan
satu atau beberapa literal objek
IconSequence, dengan properti
berikut:
icon(diperlukan) adalah simbol yang akan dirender pada garis.offsetmenentukan jarak dari awal garis tempat ikon akan dirender. Jarak ini mungkin dinyatakan dalam persentase panjang garis (misalnya, '50%') atau dalam piksel (misalnya, '50px'). Nilai defaultnya adalah '100%'.repeatmenentukan jarak antara ikon yang berurutan pada garis. Jarak ini mungkin dinyatakan dalam persentase panjang garis (misalnya, '50%') atau dalam piksel (misalnya, '50px'). Untuk menonaktifkan pengulangan ikon, tetapkan '0'. Nilai defaultnya adalah '0'.
Dengan kombinasi simbol dan class PolylineOptions,
Anda memiliki kontrol yang besar terhadap tampilan dan nuansa polyline pada peta.
Berikut beberapa contoh penyesuaian yang dapat Anda terapkan.
Panah
Gunakan properti IconSequence.offset untuk menambahkan panah
ke awal atau akhir polyline.
// 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 });
Garis putus-putus
Anda bisa mendapatkan efek garis putus-putus dengan menetapkan opasitas polyline ke 0, dan menempatkan simbol buram di atas garis dengan interval teratur.
// 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 });
Jalur kustom
Simbol kustom memungkinkan Anda menambahkan banyak bentuk yang berbeda ke polyline.
// 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 });
Menganimasikan simbol
Anda dapat menganimasikan simbol di sepanjang jalur menggunakan
fungsi window.setInterval() DOM untuk mengubah offset simbol
pada interval tetap.
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;
