คุณอาจต้องการควบคุมการแพนกล้อง ระดับความสูงสูงสุด หรือสร้างขอบเขตละติจูดและลองจิจูดเพื่อจำกัดการเคลื่อนไหวของผู้ใช้ในแผนที่ที่กำหนด ซึ่งทำได้โดยใช้ ข้อจำกัดของกล้อง
ตัวอย่างต่อไปนี้แสดงแผนที่ที่มีการตั้งค่าขอบเขตสถานที่ตั้งเพื่อจำกัดการเคลื่อนไหวของกล้อง
จำกัดขอบเขตของแผนที่
คุณจำกัดขอบเขตทางภูมิศาสตร์ของกล้องได้โดยตั้งค่าตัวเลือก 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();
เส้นทางกล้องที่กำหนดไว้ล่วงหน้า
3D Maps ใน Maps JavaScript มีเส้นทางกล้องที่กำหนดไว้ล่วงหน้า 2 เส้นทาง คุณปรับแต่งเส้นทางกล้องได้โดยเปลี่ยนระยะเวลาของภาพเคลื่อนไหว (ซึ่งจะเพิ่มหรือลดความเร็ว) หรือรวมเส้นทางกล้องเข้าด้วยกันเพื่อสร้างประสบการณ์การใช้งานที่เหมือนภาพยนตร์มากขึ้น
นอกจากนี้ คุณยังควบคุมความสูงของกล้องได้โดยระบุ altitudeMode
3D Maps ใน 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, altitude: 500 },
altitudeMode: 'RELATIVE_TO_GROUND',
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
การจัดการท่าทางสัมผัสแบบ "Cooperative" ช่วยให้ผู้ใช้เลื่อนหน้าเว็บได้โดยไม่ส่งผลต่อการซูมหรือแพนของแผนที่ หากต้องการซูม ผู้ใช้สามารถใช้การควบคุม ท่าทางสัมผัส 2 นิ้ว (สำหรับอุปกรณ์หน้าจอสัมผัส) หรือกด CMD/CTRL ค้างไว้ขณะเลื่อน
โค้ดต่อไปนี้แสดงการตั้งค่าการจัดการท่าทางสัมผัสเป็น "cooperative"
new Map3DElement({
center: { lat: 37.729901343702736, lng: -119.63788444355905, altitude: 1500 },
tilt: 70,
heading: 50,
range: 4000,
gestureHandling: 'COOPERATIVE',
});
gestureHandling: greedy
การจัดการท่าทางสัมผัสแบบ "Greedy" จะตอบสนองต่อเหตุการณ์การเลื่อนและท่าทางสัมผัสทั้งหมด
gestureHandling: auto
การจัดการท่าทางสัมผัสแบบ "Auto" จะเปลี่ยนลักษณะการทำงานของแผนที่โดยขึ้นอยู่กับว่าแผนที่อยู่ใน
หรือไม่ และหน้าเว็บเลื่อนได้หรือไม่<iframe>
- หากแผนที่อยู่ใน
<iframe>การจัดการท่าทางสัมผัสจะเป็น "cooperative" - หากแผนที่ไม่อยู่ใน
<iframe>การจัดการท่าทางสัมผัสจะเป็นแบบ "greedy"