- 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.SymbolPath
atau 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 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 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.fillOpacity
mendefinisikan 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.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. Menentukan 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 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.strokeColor
adalah 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.strokeOpacity
menentukan 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.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 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.offset
menentukan 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%'.repeat
menentukan 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;