คุณอาจต้องการควบคุมการแพนกล้อง ระดับความสูงสูงสุด หรือ สร้างขอบเขตละติจูดและลองจิจูดเพื่อจำกัดการเคลื่อนไหวของผู้ใช้ใน แผนที่ที่กำหนด ซึ่งทำได้โดยใช้ข้อจำกัดของกล้อง
ตัวอย่างต่อไปนี้แสดงแผนที่ที่มีการตั้งค่าขอบเขตสถานที่เพื่อจำกัดการเคลื่อนไหวของกล้อง
จำกัดขอบเขตของแผนที่
คุณจำกัดขอบเขตทางภูมิศาสตร์ของกล้องได้โดยการตั้งค่าตัวเลือก bounds
ตัวอย่างโค้ดต่อไปนี้แสดงการจำกัดขอบเขตของแผนที่
async function init() {
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map = new Map3DElement({
center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
tilt: 67.5,
mode: MapMode.HYBRID,
bounds: {south: 37, west: -123, north: 38, east: -121}
});
init();
}
จำกัดการเข้าถึงกล้อง
คุณจำกัดการเคลื่อนไหวของกล้องได้โดยตั้งค่าตัวเลือกต่อไปนี้
maxAltitudeminAltitudemaxHeadingminHeadingmaxTiltminTilt
ตัวอย่างโค้ดต่อไปนี้แสดงการจำกัดกล้อง
async function init() {
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map = new Map3DElement({
center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
tilt: 67.5,
mode: MapMode.HYBRID,
minAltitude: 1,
maxAltitude: 1000,
minTilt: 35,
maxTilt: 55
});
document.body.append(map);
}
init();
จำกัดขอบเขตของแผนที่และกล้อง
คุณสามารถจำกัดทั้งขอบเขตของแผนที่และกล้องได้พร้อมกัน ตัวอย่างโค้ดต่อไปนี้แสดงการจำกัดทั้งขอบเขตของแผนที่และกล้อง
async function init() {
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map = new Map3DElement({
center: { lat: 37.7704, lng: -122.3985, altitude: 500 },
tilt: 67.5,
mode: MapMode.HYBRID,
minAltitude: 1,
maxAltitude: 1000,
minTilt: 35,
maxTilt: 55,
bounds: {south: 37, west: -123, north: 38, east: -121}
});
document.body.append(map);
}
init();
เส้นทางกล้องที่กำหนดล่วงหน้า
แผนที่ 3 มิติใน Maps JavaScript มีเส้นทางกล้องที่กำหนดไว้ล่วงหน้า 2 เส้นทาง คุณปรับแต่งเส้นทางกล้องได้โดยเปลี่ยนระยะเวลาของภาพเคลื่อนไหว (ซึ่งจะเพิ่มหรือลดความเร็ว) หรือโดยการรวมเส้นทางกล้องเพื่อสร้างประสบการณ์ที่เหมือนภาพยนตร์มากขึ้น
แผนที่ 3 มิติใน Maps JavaScript รองรับเส้นทางกล้องต่อไปนี้
flyCameraToภาพเคลื่อนไหวจะบินจากกึ่งกลางแผนที่ไปยัง จุดหมายที่ระบุflyCameraAroundภาพเคลื่อนไหวจะหมุนรอบจุดบนแผนที่ตามจำนวนรอบที่ระบุ
คุณอาจรวมเส้นทางที่มีอยู่ 2 เส้นทางเพื่อบินไปยังจุดที่น่าสนใจ หมุนรอบจุดนั้น แล้วหยุดเมื่อระบุ
บินไปที่
ตัวอย่างโค้ดต่อไปนี้แสดงการเคลื่อนไหวของกล้องให้บินไปยัง ตำแหน่ง
const map = document.querySelector('gmp-map-3d');
async function init() {
await google.maps.importLibrary('maps3d');
map.flyCameraTo({
endCamera: {
center: { lat: 37.6191, lng: -122.3816 },
tilt: 67.5,
range: 1000
},
durationMillis: 5000
});
}
บินไปรอบๆ
ตัวอย่างโค้ดต่อไปนี้แสดงการเคลื่อนไหวของกล้องให้บินไปรอบๆ สถานที่
const map = document.querySelector('gmp-map-3d');
async function init() {
await google.maps.importLibrary('maps3d');
map.flyCameraAround({
camera,
durationMillis: 60000,
repeatCount: 1
});
}
รวมภาพเคลื่อนไหว
ตัวอย่างโค้ดต่อไปนี้แสดงการรวมภาพเคลื่อนไหวเพื่อบินกล้องไปยัง ตำแหน่งหนึ่ง แล้วหมุนรอบตำแหน่งนั้นเมื่อภาพเคลื่อนไหวแรกสิ้นสุด
const map = document.querySelector('gmp-map-3d');
async function init() {
await google.maps.importLibrary('maps3d');
map.flyCameraTo({
endCamera: flyToCamera,
durationMillis: 5000,
});
map.addEventListener('gmp-animationend', () => {
map.flyCameraAround({
camera: flyToCamera,
durationMillis: 60000,
repeatCount: 1
});
}, {once: true});
}
การจัดการท่าทางสัมผัสควบคุม
เมื่อผู้ใช้เลื่อนหน้าเว็บที่มีแผนที่ การเลื่อนอาจทําให้แผนที่ซูมโดยไม่ตั้งใจ
คุณควบคุมลักษณะการทำงานนี้ได้โดยตั้งค่าgestureHandlingตัวเลือกแผนที่
gestureHandling: cooperative
การจัดการท่าทางสัมผัสแบบ "ร่วมมือ" ช่วยให้ผู้ใช้เลื่อนหน้าเว็บได้โดยไม่ส่งผลต่อการซูมหรือการเลื่อนแผนที่ หากต้องการซูม ผู้ใช้สามารถใช้ตัวควบคุม ท่าทางสัมผัส 2 นิ้ว (สำหรับอุปกรณ์หน้าจอสัมผัส) หรือกด CMD/CTRL ค้างไว้ขณะเลื่อน
โค้ดต่อไปนี้แสดงการตั้งค่าการจัดการท่าทางสัมผัสเป็น "ร่วมกัน"
new Map3DElement({
center: { lat: 37.729901343702736, lng: -119.63788444355905, altitude: 1500 },
tilt: 70,
heading: 50,
range: 4000,
gestureHandling: 'COOPERATIVE',
});
gestureHandling: greedy
การจัดการท่าทางสัมผัสแบบ "Greedy" จะตอบสนองต่อเหตุการณ์การเลื่อนและท่าทางสัมผัสทั้งหมด
gestureHandling: auto
การจัดการท่าทางสัมผัส "อัตโนมัติ" จะเปลี่ยนลักษณะการทำงานของแผนที่โดยขึ้นอยู่กับว่าแผนที่อยู่ใน <iframe> หรือไม่ และหน้าเว็บเลื่อนได้หรือไม่
- หากแผนที่อยู่ภายใน
<iframe>การจัดการท่าทางสัมผัสจะเป็นแบบ "ร่วมมือ" - หากแผนที่ไม่ได้อยู่ภายใน
<iframe>การจัดการท่าทางสัมผัสจะเป็นแบบ "greedy"