- บทนำ
- คุณสมบัติของสัญลักษณ์
- สัญลักษณ์ที่กำหนดไว้ล่วงหน้า
- เพิ่มสัญลักษณ์ลงในเครื่องหมาย
- เพิ่มสัญลักษณ์ในเส้นประกอบ
- ทำให้สัญลักษณ์เคลื่อนไหว
บทนำ
Symbol
เป็นไอคอนแบบเวกเตอร์ที่สามารถแสดงใน
Marker
หรือ
Polyline
ออบเจ็กต์ รูปร่างของสัญลักษณ์ถูกกำหนดโดยเส้นทางโดยใช้
สัญกรณ์เส้นทาง SVG
แม้ว่า path
เป็นพร็อพเพอร์ตี้เดียวที่จำเป็น แต่
ออบเจ็กต์ Symbol
รองรับพร็อพเพอร์ตี้ที่หลากหลาย ซึ่งช่วยให้คุณ
กำหนดลักษณะที่มองเห็น เช่น สีและน้ำหนักของเส้นโครงร่าง
เติม ดูรายการที่พัก
มีสัญลักษณ์ที่กำหนดไว้ล่วงหน้าหลายรายการใน SymbolPath
ดูรายการด้านล่าง
คุณสมบัติของสัญลักษณ์
โปรดทราบว่าลักษณะการทำงานเริ่มต้นของ Symbol
จะแตกต่างกันเล็กน้อย
ขึ้นอยู่กับว่าปรากฏบนแผ่นเครื่องหมายหรือเส้นประกอบ ความแปรปรวนเหล่านี้
มีการอธิบายไว้ในรายการที่พักด้านล่าง
Symbol
รองรับพร็อพเพอร์ตี้ต่อไปนี้
path
(ต้องระบุ) คือเส้นทางที่กำหนดฟิลด์ รูปร่างของสัญลักษณ์ คุณจะใช้เส้นทางใดเส้นทางหนึ่งที่กำหนดไว้ล่วงหน้าได้ในgoogle.maps.SymbolPath
หรือกำหนดเส้นทางที่กำหนดเองโดยใช้ สัญกรณ์เส้นทาง SVG หมายเหตุ: เส้นทางเวกเตอร์บนเส้นประกอบต้องอยู่ในรูปสี่เหลี่ยมจัตุรัสขนาด 22x22 พิกเซล ถ้าเส้นทางของคุณมีจุดที่อยู่นอกสี่เหลี่ยมจัตุรัสนี้ คุณจะต้องปรับ คุณสมบัติscale
ของสัญลักษณ์เป็นค่าเศษส่วน เช่น 0.2 เพื่อให้จุดที่ปรับขนาดที่ได้อยู่ในรูปสี่เหลี่ยมanchor
กำหนดตำแหน่งของสัญลักษณ์ที่สัมพันธ์กับเครื่องหมาย หรือเส้นประกอบ พิกัดของเส้นทางสัญลักษณ์จะแปลไปทางซ้ายและขึ้น ตามพิกัด x และ y ของจุดยึด ตามลำดับ โดยค่าเริ่มต้น สัญลักษณ์คือ ตรึงอยู่ที่(0, 0)
โดยตำแหน่งจะแสดงใน เป็นเส้นทางของสัญลักษณ์fillColor
คือสีเติมของสัญลักษณ์ (ที่ คือบริเวณที่มีเส้นโครงร่างติดกับเส้นโครงร่าง) รองรับสี CSS3 ทั้งหมด ยกเว้นสีแบบขยายชื่อ สำหรับสัญลักษณ์บนเครื่องหมาย ค่าเริ่มต้นคือ "สีดำ" สำหรับสัญลักษณ์ใน เส้นประกอบ ค่าเริ่มต้นคือสีเส้นโครงร่างของเส้นประกอบที่เกี่ยวข้องfillOpacity
กำหนดความทึบแสงสัมพัทธ์ (กล่าวคือขาด ความโปร่งใส) ของสีเติมของสัญลักษณ์ ค่าอยู่ในช่วง 0.0 (เต็มจำนวน โปร่งใส) เป็น 1.0 (ทึบแสงเต็มที่) ค่าเริ่มต้นคือ 0.0rotation
คือมุมที่จะใช้หมุนสัญลักษณ์ แสดงเป็นองศาตามเข็มนาฬิกา โดยค่าเริ่มต้น เครื่องหมายสัญลักษณ์จะมีการหมุนเป็น 0 และสัญลักษณ์บนเส้นประกอบจะมีการหมุนตามมุมของขอบที่เส้นตัดนั้น โกหก การตั้งค่าการหมุนสัญลักษณ์บนเส้นประกอบจะแก้ไขการหมุนของ เพื่อไม่ให้เคลื่อนที่ตามเส้นโค้งของเส้นอีกต่อไปscale
กำหนดสเกลที่จะใช้แสดงสัญลักษณ์ สําหรับตัวทำเครื่องหมายสัญลักษณ์ สเกลเริ่มต้นคือ 1 หลังจากปรับขนาด สัญลักษณ์อาจเป็น ขนาดใดก็ได้ สำหรับสัญลักษณ์บนเส้นประกอบ สเกลเริ่มต้นคือน้ำหนักเส้นโครงร่างของ เส้นประกอบ หลังจากปรับขนาด สัญลักษณ์จะต้องอยู่ในรูปสี่เหลี่ยมจัตุรัสขนาด 22x22 พิกเซล ตรงจุดยึดของสัญลักษณ์strokeColor
คือสีเส้นขอบของสัญลักษณ์ CSS3 ทั้งหมด สีที่ใช้ได้ ยกเว้นสีแบบขยายชื่อ สำหรับสัญลักษณ์บนเครื่องหมาย ค่าเริ่มต้นคือ "สีดำ" สำหรับสัญลักษณ์บนเส้นประกอบ สีเริ่มต้นคือ สีเส้นโครงร่างของเส้นประกอบstrokeOpacity
กำหนดความทึบแสงสัมพัทธ์ (กล่าวคือ ขาด ความโปร่งใส) ของเส้นโครงร่างของสัญลักษณ์ ค่าอยู่ในช่วง 0.0 (เต็มจำนวน โปร่งใส) เป็น 1.0 (ทึบแสงเต็มที่) สำหรับเครื่องหมายสัญลักษณ์ ค่าเริ่มต้นคือ 1.0 สำหรับสัญลักษณ์บนเส้นประกอบ ค่าเริ่มต้นคือความทึบแสงของเส้นโครงร่างของ เส้นประกอบstrokeWeight
กำหนดน้ำหนักของโครงร่างสัญลักษณ์ ค่าเริ่มต้นคือscale
ของสัญลักษณ์
สัญลักษณ์ที่กำหนดไว้ล่วงหน้า
Maps JavaScript API มีสัญลักษณ์ในตัวซึ่งคุณสามารถ
ลงในเครื่องหมายหรือเส้นประกอบผ่าน
SymbolPath
สัญลักษณ์เริ่มต้นประกอบด้วยวงกลมและลูกศร 2 ประเภท ส่งต่อทั้งคู่ และลูกศรหันไปข้างหลังพร้อมใช้งาน ซึ่งจะเป็นประโยชน์อย่างยิ่งสำหรับ เส้นประกอบ เนื่องจากการวางแนวของสัญลักษณ์บนเส้นประกอบเป็นแบบตายตัว ไปข้างหน้าถือว่าอยู่ในทิศทางของจุดสิ้นสุดของ เส้นประกอบ
คุณสามารถแก้ไขเส้นโครงร่างหรือการเติมสัญลักษณ์ที่กำหนดไว้ล่วงหน้าได้โดยใช้ ตัวเลือกสัญลักษณ์เริ่มต้น
สัญลักษณ์ที่กำหนดไว้ล่วงหน้ามีดังต่อไปนี้
ชื่อ | คำอธิบาย | ตัวอย่าง |
---|---|---|
google.maps.SymbolPath.CIRCLE |
วงกลม | |
google.maps.SymbolPath.BACKWARD_CLOSED_ARROW |
ลูกศรชี้ไปข้างหลังที่ปิดทุกด้าน | |
google.maps.SymbolPath.FORWARD_CLOSED_ARROW |
ลูกศรชี้ไปข้างหน้าแบบปิดทุกด้าน | |
google.maps.SymbolPath.BACKWARD_OPEN_ARROW |
ลูกศรชี้ไปข้างหลังที่เปิดด้านหนึ่ง | |
google.maps.SymbolPath.FORWARD_OPEN_ARROW |
ลูกศรชี้ไปข้างหน้าที่เปิดอยู่ด้านหนึ่ง |
เพิ่มสัญลักษณ์ลงในเครื่องหมาย
การแสดงไอคอนแบบเวกเตอร์บน
marker, ส่ง
ลิเทอรัลวัตถุ Symbol
ที่มีเส้นทางที่ต้องการไปยังเครื่องหมาย
พร็อพเพอร์ตี้ icon
ตัวอย่างต่อไปนี้ใช้
สัญกรณ์เส้นทาง 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;
ลองใช้ตัวอย่าง
เพิ่มสัญลักษณ์ในเส้นประกอบ
หากต้องการแสดงสัญลักษณ์ในเส้นประกอบ ให้ตั้งค่าพร็อพเพอร์ตี้ icons[]
ของ
ออบเจ็กต์ PolylineOptions
อาร์เรย์ icons[]
ใช้เวลา
อย่างน้อยหนึ่งรายการ
ลิเทอรัลออบเจ็กต์ IconSequence
รายการต่อไปนี้
พร็อพเพอร์ตี้:
icon
(ต้องระบุ) เป็นสัญลักษณ์ที่จะแสดง ในบรรทัดนั้นoffset
กำหนดระยะห่างจากจุดเริ่มต้นของเส้น ที่จะใช้ในการแสดงผลไอคอน ระยะทางนี้อาจแสดงเป็น เปอร์เซ็นต์ของความยาวของเส้น (เช่น "50%") หรือในหน่วยพิกเซล (เช่น เช่น "50px") ค่าเริ่มต้นคือ "100%"repeat
กำหนดระยะห่างระหว่างไอคอนที่อยู่ติดกันใน ในบรรทัดนั้น ระยะทางนี้อาจแสดงเป็นเปอร์เซ็นต์ของความยาวของเส้น (เช่น "50%") หรือในหน่วยพิกเซล (เช่น "50px") หากต้องการปิดใช้การทำซ้ำ ของไอคอน ให้ระบุ "0" ค่าเริ่มต้นคือ "0"
เมื่อใช้สัญลักษณ์และคลาส PolylineOptions
ร่วมกัน
คุณจะสามารถควบคุมรูปลักษณ์ของเส้นประกอบบนแผนที่ได้มาก
ด้านล่างนี้เป็นตัวอย่างการปรับแต่งที่คุณนำไปใช้ได้
ลูกศร
ใช้พร็อพเพอร์ตี้ IconSequence.offset
เพื่อเพิ่มลูกศรไปยัง
จุดเริ่มต้นหรือจุดสิ้นสุดของเส้นประกอบ
// 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 });
เส้นประ
คุณสามารถสร้างเอฟเฟ็กต์เส้นประได้โดยการตั้งค่าความทึบแสง เส้นประกอบเป็น 0 และแสดงสัญลักษณ์ทึบซ้อนบนเส้นที่ปกติ เป็นรอบ
// 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 });
เส้นทางที่กำหนดเอง
สัญลักษณ์ที่กำหนดเองช่วยให้คุณเพิ่มรูปร่างต่างๆ ลงในเส้นประกอบได้
// 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 });
ทำให้สัญลักษณ์เคลื่อนไหว
คุณสามารถทำให้สัญลักษณ์เคลื่อนไหวไปตามเส้นทางได้โดยใช้แท็ก
window.setInterval()
สำหรับเปลี่ยนออฟเซ็ตของสัญลักษณ์
ตามช่วงเวลาคงที่
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;