- 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 jika path
adalah satu-satunya properti yang diperlukan, objek Symbol
mendukung berbagai properti yang memungkinkan Anda menyesuaikan aspek visual, seperti warna dan 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.SymbolPath
atau menentukan 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 propertiscale
simbol ke nilai pecahan, seperti 0.2, sehingga titik berskala yang dihasilkan dapat muat dalam persegi ini.anchor
menetapkan 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.fillColor
adalah warna isi 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.fillOpacity
mendefinisikan opasitas relatif (yaitu, kurangnya transparansi) dari pengisian simbol. Nilainya berkisar dari 0.0 (sepenuhnya transparan) hingga 1.0 (sepenuhnya tidak tembus pandang). Nilai defaultnya adalah 0.0.rotation
adalah 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. Setelan rotasi simbol pada polyline akan menetapkan rotasi simbol sedemikian rupa, sehingga tidak lagi mengikuti lekuk garis.scale
menetapkan jumlah yang digunakan untuk menskalakan ukuran simbol. Untuk penanda simbol, skala defaultnya adalah 1. Setelah diskalakan, ukuran simbol bisa berapa saja. Untuk simbol pada polyline, skala defaultnya adalah bobot goresan polyline. Setelah diskalakan, simbol harus diletakkan dalam segi empat 22x22px, yang berpusat di jangkar simbol tersebut.strokeColor
adalah warna garis batas simbol. Semua warna CSS3 didukung, kecuali tambahan warna yang dinamai. Untuk simbol pada penanda, defaultnya adalah 'hitam'. Untuk simbol pada polyline, warna defaultnya adalah warna goresan polyline.strokeOpacity
menentukan opasitas relatif (yaitu, kurangnya transparansi) guratan 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 pada polyline, defaultnya adalah opasitas goresan polyline.strokeWeight
menentukan bobot garis batas simbol. Nilai defaultnya adalahscale
simbol.
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 menghadap ke depan dianggap sebagai arah ujung polyline.
Anda dapat memodifikasi guratan atau isian 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 pada 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 pada 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.offset
menentukan jarak dari awal garis tempat ikon akan dirender. Jarak ini mungkin dinyatakan berupa persentase panjang garis (misalnya, '50%') atau dalam piksel (misalnya, '50px'). Nilai defaultnya adalah '100%'.repeat
menentukan jarak antara ikon yang berurutan pada garis. Jarak ini mungkin dinyatakan berupa 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 banyak kontrol 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 opaque 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;