บทนำ
เครื่องหมายระบุตำแหน่งบนแผนที่ โดยค่าเริ่มต้น เครื่องหมายจะใช้
รูปภาพมาตรฐาน เครื่องหมายสามารถแสดงรูปภาพที่กำหนดเอง ซึ่งในกรณีนี้คือ
โดยทั่วไปเรียกว่า "ไอคอน" เครื่องหมายและไอคอนเป็นวัตถุประเภท
Marker
คุณสามารถกำหนดไอคอนที่กำหนดเองภายในตัวสร้างของเครื่องหมาย หรือโดย
กำลังเรียก setIcon()
บนเครื่องหมาย ดูข้อมูลเพิ่มเติมเกี่ยวกับ
การปรับแต่งภาพเครื่องหมาย
หรือพูดกว้างๆ ก็คือ เครื่องหมายเป็นการวางซ้อนประเภทหนึ่ง สำหรับข้อมูลเกี่ยวกับ ประเภทการวางซ้อน โปรดดู ภาพวาดบนแผนที่
เครื่องหมายได้รับการออกแบบมาให้โต้ตอบ เช่น โดยค่าเริ่มต้น
ได้รับเหตุการณ์ 'click'
รายการ คุณจะเพิ่ม Listener เหตุการณ์ได้
แสดง
หน้าต่างข้อมูล
การแสดงข้อมูลที่กำหนดเอง คุณสามารถอนุญาตให้ผู้ใช้ย้ายเครื่องหมายบน
ทำแผนที่ได้โดยตั้งค่าคุณสมบัติ draggable
ของเครื่องหมายเป็น
true
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับเครื่องหมายที่ลากได้ โปรดดู
ด้านล่าง
เพิ่มเครื่องหมาย
google.maps.Marker
เครื่องมือสร้างมีออบเจ็กต์ Marker options
รายการเดียว
ลิเทอรัล ซึ่งระบุคุณสมบัติเริ่มต้นของเครื่องหมาย
ฟิลด์ต่อไปนี้มีความสําคัญอย่างยิ่งและมีการตั้งค่าโดยทั่วไปเมื่อ การสร้างเครื่องหมาย:
-
position
(ต้องระบุ) ระบุLatLng
ที่ระบุตำแหน่งเริ่มต้นของเครื่องหมาย หนึ่ง วิธีดึงข้อมูลLatLng
คือการใช้ บริการเข้ารหัสพิกัดภูมิศาสตร์ -
map
(ไม่บังคับ) ระบุMap
ที่จะ วางเครื่องหมาย ถ้าคุณไม่ได้ระบุแผนที่ในการก่อสร้างของ เครื่องหมาย เครื่องหมายถูกสร้างขึ้น แต่ไม่ได้แนบกับ (หรือแสดงบน) แผนที่ คุณสามารถเพิ่มเครื่องหมายได้ในภายหลัง โดยเรียกsetMap()
วิธี
ตัวอย่างต่อไปนี้จะเพิ่มเครื่องหมายง่ายๆ ลงในแผนที่ที่อุลูรูใน ของออสเตรเลีย:
TypeScript
function initMap(): void { const myLatLng = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: myLatLng, } ); new google.maps.Marker({ position: myLatLng, map, title: "Hello World!", }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const myLatLng = { lat: -25.363, lng: 131.044 }; const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: myLatLng, }); new google.maps.Marker({ position: myLatLng, map, title: "Hello World!", }); } window.initMap = initMap;
ลองใช้ตัวอย่าง
ในตัวอย่างข้างต้น เครื่องหมายวางอยู่บนแผนที่ ณ เวลาที่ก่อสร้าง
โดยใช้คุณสมบัติ map
ในตัวเลือกเครื่องหมาย
หรือคุณสามารถเพิ่มเครื่องหมายลงในแผนที่โดยตรง โดยใช้
เมธอด setMap()
ของตัวทำเครื่องหมาย ดังที่แสดงในตัวอย่างด้านล่าง
var myLatlng = new google.maps.LatLng(-25.363882,131.044922); var mapOptions = { zoom: 4, center: myLatlng } var map = new google.maps.Map(document.getElementById("map"), mapOptions); var marker = new google.maps.Marker({ position: myLatlng, title:"Hello World!" }); // To add the marker to the map, call setMap(); marker.setMap(map);
title
ของเครื่องหมายจะปรากฏเป็นเคล็ดลับเครื่องมือ
หากคุณไม่ต้องการผ่าน Marker options
ใดๆ ใน
เครื่องมือสร้างของเครื่องหมาย
ให้ส่งวัตถุที่ว่างเปล่า {}
ใน
อาร์กิวเมนต์สุดท้ายของตัวสร้าง
นำเครื่องหมายออก
หากต้องการนำเครื่องหมายออกจากแผนที่ ให้เรียกเมธอด setMap()
การส่ง null
เป็นอาร์กิวเมนต์
marker.setMap(null);
โปรดทราบว่าวิธีการข้างต้นจะไม่ลบเครื่องหมายระบุตำแหน่ง โดยจะนำ
เครื่องหมายออกจากแผนที่ แต่หากคุณต้องการลบเครื่องหมาย คุณควร
ให้ลบหมุดออกจากแผนที่ แล้วกำหนดเครื่องหมายเองเป็น
null
หากต้องการจัดการชุดเครื่องหมาย คุณควรสร้างอาร์เรย์เพื่อเก็บ
เครื่องหมาย เมื่อใช้อาร์เรย์ คุณจะเรียก setMap()
ใน
ตัวทำเครื่องหมายในอาร์เรย์ตามลำดับเมื่อคุณต้องลบตัวทำเครื่องหมาย คุณ
ก็สามารถลบเครื่องหมายโดยลบเครื่องหมายออกจากแผนที่ แล้วตั้งค่า
ของ length
ถึง 0
ซึ่งจะลบ
อ้างอิงถึงเครื่องหมายดังกล่าว
ปรับแต่งภาพเครื่องหมาย
คุณสามารถปรับแต่งรูปลักษณ์ที่ปรากฏของเครื่องหมายได้โดยการระบุ ไฟล์ภาพ หรือ ไอคอนแบบเวกเตอร์ เพื่อแสดงแทนค่าเริ่มต้น ไอคอนหมุดของ Google Maps คุณสามารถเพิ่มข้อความด้วย ป้ายกำกับเครื่องหมายและใช้ ไอคอนที่ซับซ้อนเพื่อกำหนดพื้นที่ที่คลิกได้ และกำหนดลำดับการเรียงเครื่องหมาย
เครื่องหมายที่มีไอคอนรูปภาพ
ในกรณีทั่วไปที่สุด ไอคอนสามารถระบุรูปภาพที่จะใช้แทน
ไอคอนหมุดเริ่มต้นของ Google Maps หากต้องการระบุไอคอนดังกล่าว ให้ตั้งค่า
คุณสมบัติ icon
ของตัวทำเครื่องหมายไปยัง URL ของรูปภาพ Maps JavaScript API จะกำหนดขนาดไอคอนโดยอัตโนมัติ
TypeScript
// This example adds a marker to indicate the position of Bondi Beach in Sydney, // Australia. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 4, center: { lat: -33, lng: 151 }, } ); const image = "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png"; const beachMarker = new google.maps.Marker({ position: { lat: -33.89, lng: 151.274 }, map, icon: image, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example adds a marker to indicate the position of Bondi Beach in Sydney, // Australia. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 4, center: { lat: -33, lng: 151 }, }); const image = "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png"; const beachMarker = new google.maps.Marker({ position: { lat: -33.89, lng: 151.274 }, map, icon: image, }); } window.initMap = initMap;
ลองใช้ตัวอย่าง
เครื่องหมายที่มีไอคอนแบบเวกเตอร์
คุณสามารถใช้เส้นทางเวกเตอร์ SVG ที่กำหนดเองเพื่อกำหนดลักษณะภาพของ
ปากกามาร์กเกอร์ ซึ่งทำได้โดยการส่งผ่านออบเจ็กต์ลิเทอรัลของออบเจ็กต์ Symbol
ที่มีเมธอด
เส้นทางที่ต้องการไปยังพร็อพเพอร์ตี้ icon
ของเครื่องหมาย คุณสามารถกำหนด
เส้นทางที่กำหนดเองโดยใช้
สัญกรณ์เส้นทาง SVG หรือใช้หนึ่งในเส้นทางที่กำหนดไว้ล่วงหน้าใน
google.maps.SymbolPath ต้องมีพร็อพเพอร์ตี้ anchor
เพื่อให้เครื่องหมาย
แสดงผลอย่างถูกต้องเมื่อระดับการซูมเปลี่ยนไป ดูข้อมูลเพิ่มเติมเกี่ยวกับ
การใช้สัญลักษณ์เพื่อสร้างไอคอนแบบเวกเตอร์
สำหรับเครื่องหมาย (และเส้นประกอบ)
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;
ลองใช้ตัวอย่าง
ป้ายกำกับตัวทำเครื่องหมาย
ป้ายกำกับเครื่องหมายคือตัวอักษรหรือตัวเลขที่ปรากฏในเครื่องหมาย
ภาพเครื่องหมายในส่วนนี้แสดงป้ายเครื่องหมายพร้อมตัวอักษร "B"
ในนั้น คุณสามารถระบุป้ายกำกับตัวทำเครื่องหมายเป็นสตริงหรือ
MarkerLabel
ที่มีสตริงและพร็อพเพอร์ตี้ป้ายกำกับอื่นๆ
เมื่อสร้างเครื่องหมาย คุณจะระบุพร็อพเพอร์ตี้ label
ได้ใน
เวลา
MarkerOptions
ออบเจ็กต์ หรือโทรหา setLabel()
บน
เครื่องหมาย
เพื่อกำหนดป้ายกำกับบนเครื่องหมายที่มีอยู่
ตัวอย่างต่อไปนี้จะแสดงเครื่องหมายที่มีป้ายกำกับเมื่อผู้ใช้คลิกที่ แผนที่:
TypeScript
// In the following example, markers appear when the user clicks on the map. // Each marker is labeled with a single alphabetical character. const labels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let labelIndex = 0; function initMap(): void { const bangalore = { lat: 12.97, lng: 77.59 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 12, center: bangalore, } ); // This event listener calls addMarker() when the map is clicked. google.maps.event.addListener(map, "click", (event) => { addMarker(event.latLng, map); }); // Add a marker at the center of the map. addMarker(bangalore, map); } // Adds a marker to the map. function addMarker(location: google.maps.LatLngLiteral, map: google.maps.Map) { // Add the marker at the clicked location, and add the next-available label // from the array of alphabetical characters. new google.maps.Marker({ position: location, label: labels[labelIndex++ % labels.length], map: map, }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// In the following example, markers appear when the user clicks on the map. // Each marker is labeled with a single alphabetical character. const labels = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let labelIndex = 0; function initMap() { const bangalore = { lat: 12.97, lng: 77.59 }; const map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: bangalore, }); // This event listener calls addMarker() when the map is clicked. google.maps.event.addListener(map, "click", (event) => { addMarker(event.latLng, map); }); // Add a marker at the center of the map. addMarker(bangalore, map); } // Adds a marker to the map. function addMarker(location, map) { // Add the marker at the clicked location, and add the next-available label // from the array of alphabetical characters. new google.maps.Marker({ position: location, label: labels[labelIndex++ % labels.length], map: map, }); } window.initMap = initMap;
ลองใช้ตัวอย่าง
ไอคอนที่ซับซ้อน
คุณสามารถระบุรูปร่างที่ซับซ้อนเพื่อระบุพื้นที่ที่คลิกได้ และ
ระบุว่าจะให้ไอคอนปรากฏอย่างไรเมื่อเทียบกับการวางซ้อนอื่นๆ
"ลำดับสแต็ก") ไอคอนที่ระบุในลักษณะนี้ควรตั้งค่าไอคอน
icon
เป็นออบเจ็กต์ประเภท
Icon
Icon
วัตถุที่กำหนดรูปภาพ และยังนิยาม size
ของ
origin
ของไอคอน (หากภาพที่คุณต้องการเป็นส่วนหนึ่งของ
ของรูปภาพขนาดใหญ่ในภาพต่อเรียง) และ
anchor
ตำแหน่งที่ฮอตสปอตของไอคอนควรอยู่ (ซึ่งก็คือ
ตามต้นทาง)
หากคุณใช้ป้ายกำกับที่มีแอตทริบิวต์ที่กำหนดเอง
คุณสามารถวางตำแหน่งป้ายกำกับด้วย
พร็อพเพอร์ตี้ labelOrigin
ใน
Icon
ออบเจ็กต์
TypeScript
// The following example creates complex markers to indicate beaches near // Sydney, NSW, Australia. Note that the anchor is set to (0,32) to correspond // to the base of the flagpole. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 10, center: { lat: -33.9, lng: 151.2 }, } ); setMarkers(map); } // Data for the markers consisting of a name, a LatLng and a zIndex for the // order in which these markers should display on top of each other. const beaches: [string, number, number, number][] = [ ["Bondi Beach", -33.890542, 151.274856, 4], ["Coogee Beach", -33.923036, 151.259052, 5], ["Cronulla Beach", -34.028249, 151.157507, 3], ["Manly Beach", -33.80010128657071, 151.28747820854187, 2], ["Maroubra Beach", -33.950198, 151.259302, 1], ]; function setMarkers(map: google.maps.Map) { // Adds markers to the map. // Marker sizes are expressed as a Size of X,Y where the origin of the image // (0,0) is located in the top left of the image. // Origins, anchor positions and coordinates of the marker increase in the X // direction to the right and in the Y direction down. const image = { url: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", // This marker is 20 pixels wide by 32 pixels high. size: new google.maps.Size(20, 32), // The origin for this image is (0, 0). origin: new google.maps.Point(0, 0), // The anchor for this image is the base of the flagpole at (0, 32). anchor: new google.maps.Point(0, 32), }; // Shapes define the clickable region of the icon. The type defines an HTML // <area> element 'poly' which traces out a polygon as a series of X,Y points. // The final coordinate closes the poly by connecting to the first coordinate. const shape = { coords: [1, 1, 1, 20, 18, 20, 18, 1], type: "poly", }; for (let i = 0; i < beaches.length; i++) { const beach = beaches[i]; new google.maps.Marker({ position: { lat: beach[1], lng: beach[2] }, map, icon: image, shape: shape, title: beach[0], zIndex: beach[3], }); } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates complex markers to indicate beaches near // Sydney, NSW, Australia. Note that the anchor is set to (0,32) to correspond // to the base of the flagpole. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 10, center: { lat: -33.9, lng: 151.2 }, }); setMarkers(map); } // Data for the markers consisting of a name, a LatLng and a zIndex for the // order in which these markers should display on top of each other. const beaches = [ ["Bondi Beach", -33.890542, 151.274856, 4], ["Coogee Beach", -33.923036, 151.259052, 5], ["Cronulla Beach", -34.028249, 151.157507, 3], ["Manly Beach", -33.80010128657071, 151.28747820854187, 2], ["Maroubra Beach", -33.950198, 151.259302, 1], ]; function setMarkers(map) { // Adds markers to the map. // Marker sizes are expressed as a Size of X,Y where the origin of the image // (0,0) is located in the top left of the image. // Origins, anchor positions and coordinates of the marker increase in the X // direction to the right and in the Y direction down. const image = { url: "https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png", // This marker is 20 pixels wide by 32 pixels high. size: new google.maps.Size(20, 32), // The origin for this image is (0, 0). origin: new google.maps.Point(0, 0), // The anchor for this image is the base of the flagpole at (0, 32). anchor: new google.maps.Point(0, 32), }; // Shapes define the clickable region of the icon. The type defines an HTML // <area> element 'poly' which traces out a polygon as a series of X,Y points. // The final coordinate closes the poly by connecting to the first coordinate. const shape = { coords: [1, 1, 1, 20, 18, 20, 18, 1], type: "poly", }; for (let i = 0; i < beaches.length; i++) { const beach = beaches[i]; new google.maps.Marker({ position: { lat: beach[1], lng: beach[2] }, map, icon: image, shape: shape, title: beach[0], zIndex: beach[3], }); } } window.initMap = initMap;
ลองใช้ตัวอย่าง
กำลังแปลงวัตถุ MarkerImage
รายการเป็นประเภทIcon
ไอคอนที่ซับซ้อนจนถึง Maps JavaScript API เวอร์ชัน 3.10
กำหนดเป็นออบเจ็กต์ MarkerImage
รายการ
มีการเพิ่มออบเจ็กต์ลิเทอรัล Icon
ในเวอร์ชัน 3.10 และแทนที่
MarkerImage
ตั้งแต่เวอร์ชัน 3.11 เป็นต้นไป
ลิเทอรัลออบเจ็กต์ Icon
รองรับพารามิเตอร์เดียวกับ
MarkerImage
ซึ่งช่วยให้คุณสามารถแปลง
MarkerImage
ลงใน Icon
โดยการนำ
ที่รวมพารามิเตอร์ก่อนหน้าไว้ใน {}
และ
การเพิ่มชื่อของพารามิเตอร์แต่ละรายการ เช่น
var image = new google.maps.MarkerImage( place.icon, new google.maps.Size(71, 71), new google.maps.Point(0, 0), new google.maps.Point(17, 34), new google.maps.Size(25, 25));
กลายเป็น
var image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25) };
เครื่องหมาย Optimize
การเพิ่มประสิทธิภาพช่วยเพิ่มประสิทธิภาพการทำงานโดยการแสดงตัวทำเครื่องหมายต่างๆ เป็นรายการเดียว แบบคงที่ ซึ่งจะเป็นประโยชน์ในกรณีที่มีเครื่องหมายจำนวนมาก ต้องระบุ โดยค่าเริ่มต้น Maps JavaScript API จะตัดสิน เครื่องหมายจะได้รับการเพิ่มประสิทธิภาพหรือไม่ เมื่อมีจำนวนมาก Maps JavaScript API จะพยายามแสดงผล ที่มีการเพิ่มประสิทธิภาพ เครื่องหมายบางรายการอาจไม่สามารถเพิ่มประสิทธิภาพได้ ในบางส่วน Maps JavaScript API อาจจำเป็นต้องแสดงผล เครื่องหมายที่ไม่มีการเพิ่มประสิทธิภาพ ปิดการแสดงภาพที่เพิ่มประสิทธิภาพสำหรับภาพเคลื่อนไหว GIF หรือ PNG หรือเมื่อต้องแสดงผลเครื่องหมายแต่ละรายการเป็น DOM แยกกัน ตัวอย่างต่อไปนี้จะแสดงการสร้างเครื่องหมายที่มีการเพิ่มประสิทธิภาพ
var marker = new google.maps.Marker({ position: myLatlng, title:"Hello World!", optimized: true });
ทำให้สามารถเข้าถึงเครื่องหมายได้
คุณทำให้เครื่องหมายเข้าถึงได้โดยการเพิ่มเหตุการณ์ Listener การคลิก และ
กำลังตั้งค่า optimized
เป็น false
Listener การคลิก
ทำให้เครื่องหมายมีความหมายของปุ่ม ซึ่งเข้าถึงได้โดยใช้
การไปยังส่วนต่างๆ ด้วยแป้นพิมพ์ โปรแกรมอ่านหน้าจอ และอื่นๆ ใช้เมนู
title
เพื่อนำเสนอข้อความที่เข้าถึงได้สำหรับเครื่องหมาย
ในตัวอย่างต่อไปนี้ เครื่องหมายแรกจะได้รับโฟกัสเมื่อแท็บ กด; คุณสามารถใช้ปุ่มลูกศรเพื่อย้ายไปมาระหว่างเครื่องหมายต่างๆ สื่อ กด Tab อีกครั้งเพื่อเลื่อนไปยังตัวควบคุมแผนที่ที่เหลือต่อ หากมี เครื่องหมายมีหน้าต่างข้อมูล คุณสามารถเปิดได้โดยคลิกที่เครื่องหมาย หรือ การกดแป้น Enter หรือแป้นเว้นวรรคเมื่อเลือกเครื่องหมาย เมื่อ หน้าต่างข้อมูลปิดลง โฟกัสจะกลับไปที่เครื่องหมายที่เกี่ยวข้อง
TypeScript
// The following example creates five accessible and // focusable markers. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 12, center: { lat: 34.84555, lng: -111.8035 }, } ); // Set LatLng and title text for the markers. The first marker (Boynton Pass) // receives the initial focus when tab is pressed. Use arrow keys to // move between markers; press tab again to cycle through the map controls. const tourStops: [google.maps.LatLngLiteral, string][] = [ [{ lat: 34.8791806, lng: -111.8265049 }, "Boynton Pass"], [{ lat: 34.8559195, lng: -111.7988186 }, "Airport Mesa"], [{ lat: 34.832149, lng: -111.7695277 }, "Chapel of the Holy Cross"], [{ lat: 34.823736, lng: -111.8001857 }, "Red Rock Crossing"], [{ lat: 34.800326, lng: -111.7665047 }, "Bell Rock"], ]; // Create an info window to share between markers. const infoWindow = new google.maps.InfoWindow(); // Create the markers. tourStops.forEach(([position, title], i) => { const marker = new google.maps.Marker({ position, map, title: `${i + 1}. ${title}`, label: `${i + 1}`, optimized: false, }); // Add a click listener for each marker, and set up the info window. marker.addListener("click", () => { infoWindow.close(); infoWindow.setContent(marker.getTitle()); infoWindow.open(marker.getMap(), marker); }); }); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates five accessible and // focusable markers. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 12, center: { lat: 34.84555, lng: -111.8035 }, }); // Set LatLng and title text for the markers. The first marker (Boynton Pass) // receives the initial focus when tab is pressed. Use arrow keys to // move between markers; press tab again to cycle through the map controls. const tourStops = [ [{ lat: 34.8791806, lng: -111.8265049 }, "Boynton Pass"], [{ lat: 34.8559195, lng: -111.7988186 }, "Airport Mesa"], [{ lat: 34.832149, lng: -111.7695277 }, "Chapel of the Holy Cross"], [{ lat: 34.823736, lng: -111.8001857 }, "Red Rock Crossing"], [{ lat: 34.800326, lng: -111.7665047 }, "Bell Rock"], ]; // Create an info window to share between markers. const infoWindow = new google.maps.InfoWindow(); // Create the markers. tourStops.forEach(([position, title], i) => { const marker = new google.maps.Marker({ position, map, title: `${i + 1}. ${title}`, label: `${i + 1}`, optimized: false, }); // Add a click listener for each marker, and set up the info window. marker.addListener("click", () => { infoWindow.close(); infoWindow.setContent(marker.getTitle()); infoWindow.open(marker.getMap(), marker); }); }); } window.initMap = initMap;
ลองใช้ตัวอย่าง
ทำให้เครื่องหมายเคลื่อนไหว
คุณสามารถทำให้เครื่องหมายเคลื่อนไหวเพื่อแสดงการเคลื่อนไหวที่ลื่นไหลในรูปแบบต่างๆ
ในสถานการณ์ต่างๆ หากต้องการระบุวิธีภาพเคลื่อนไหวของเครื่องหมาย ให้ใช้
คุณสมบัติ animation
ของตัวทำเครื่องหมาย ประเภท
google.maps.Animation
ดังต่อไปนี้
ค่าที่รองรับ Animation
รายการ ได้แก่
-
DROP
บ่งชี้ว่าเครื่องหมายควรวางจากด้านบนของ ไปยังตำแหน่งสุดท้ายเมื่อลงบนแผนที่เป็นครั้งแรก ภาพเคลื่อนไหว จะหยุดเมื่อเครื่องหมายหยุดนิ่งและanimation
จะ เปลี่ยนกลับเป็นnull
ภาพเคลื่อนไหวประเภทนี้มักจะมีการระบุ ระหว่างการสร้างMarker
-
BOUNCE
บ่งชี้ว่าเครื่องหมายควรตีกลับไปที่ตำแหน่ง ต เครื่องหมายตีกลับจะยังคงตีกลับจนกว่า มีการตั้งค่าพร็อพเพอร์ตี้animation
เป็นnull
อย่างชัดเจน
คุณอาจเริ่มภาพเคลื่อนไหวบนเครื่องหมายที่มีอยู่โดยเรียกใช้
setAnimation()
บนออบเจ็กต์ Marker
TypeScript
// The following example creates a marker in Stockholm, Sweden using a DROP // animation. Clicking on the marker will toggle the animation between a BOUNCE // animation and no animation. let marker: google.maps.Marker; function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 13, center: { lat: 59.325, lng: 18.07 }, } ); marker = new google.maps.Marker({ map, draggable: true, animation: google.maps.Animation.DROP, position: { lat: 59.327, lng: 18.067 }, }); marker.addListener("click", toggleBounce); } function toggleBounce() { if (marker.getAnimation() !== null) { marker.setAnimation(null); } else { marker.setAnimation(google.maps.Animation.BOUNCE); } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// The following example creates a marker in Stockholm, Sweden using a DROP // animation. Clicking on the marker will toggle the animation between a BOUNCE // animation and no animation. let marker; function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 13, center: { lat: 59.325, lng: 18.07 }, }); marker = new google.maps.Marker({ map, draggable: true, animation: google.maps.Animation.DROP, position: { lat: 59.327, lng: 18.067 }, }); marker.addListener("click", toggleBounce); } function toggleBounce() { if (marker.getAnimation() !== null) { marker.setAnimation(null); } else { marker.setAnimation(google.maps.Animation.BOUNCE); } } window.initMap = initMap;
ลองใช้ตัวอย่าง
หากคุณมีเครื่องหมายจำนวนมาก คุณอาจไม่ต้องการวางเครื่องหมายเหล่านั้นลงบนแผนที่ทั้งหมด
พร้อมกัน คุณสามารถใช้ setTimeout()
เพื่อเพิ่มพื้นที่ว่าง
เครื่องหมาย ภาพเคลื่อนไหวโดยใช้รูปแบบดังที่แสดงด้านล่าง
function drop() { for (var i =0; i < markerArray.length; i++) { setTimeout(function() { addMarkerMethod(); }, i * 200); } }
ทำให้เครื่องหมายสามารถลากได้
หากต้องการให้ผู้ใช้ลากเครื่องหมายไปยังตำแหน่งอื่นบนแผนที่ ให้ตั้งค่า
draggable
ถึง true
ในตัวเลือกเครื่องหมาย
var myLatlng = new google.maps.LatLng(-25.363882,131.044922); var mapOptions = { zoom: 4, center: myLatlng } var map = new google.maps.Map(document.getElementById("map"), mapOptions); // Place a draggable marker on the map var marker = new google.maps.Marker({ position: myLatlng, map: map, draggable:true, title:"Drag me!" });
การปรับแต่งเครื่องหมายเพิ่มเติม
สำหรับเครื่องหมายที่ปรับแต่งมาอย่างสมบูรณ์ ให้ดูที่ ตัวอย่างป๊อปอัปที่กำหนดเอง
สำหรับส่วนขยายเพิ่มเติมของคลาสเครื่องหมาย การจัดคลัสเตอร์และการจัดการเครื่องหมาย และการปรับแต่งการวางซ้อน โปรดดู ไลบรารีโอเพนซอร์ส