เครื่องมือสำรวจพื้นที่ 3 มิติเป็นโซลูชันที่ช่วยให้คุณสำรวจชุมชนในรูปแบบ 3 มิติที่น่าสนใจได้ โซลูชันนี้ใช้ประโยชน์จากสิ่งต่อไปนี้ ชิ้นส่วนแผนที่ 3 มิติแบบสมจริงของ Google การค้นหาสถานที่ รายละเอียดสถานที่ และ Autocomplete API
การเริ่มต้นใช้งาน
เปิดใช้
ปรับแต่งประสบการณ์การใช้งาน
โซลูชันเครื่องมือสำรวจพื้นที่แบบ 3 มิติปรับแต่งได้สูง ช่วยให้คุณปรับแต่งประสบการณ์ให้เหมาะกับเส้นทางของลูกค้าได้ คุณสามารถปรับแต่งโดยใช้แผงควบคุมใน UI หรือใช้ไฟล์ config.json ก็ได้
พร้อมปรับแต่งแล้วใช่ไหม โดยทำดังนี้
ตำแหน่ง
กำหนดจุดเริ่มต้นของประสบการณ์โดยการปรับละติจูดและลองจิจูดในไฟล์ config.json
การควบคุมกล้อง
ควบคุมการเดินทางของคุณโดยเลือกประเภทวงโคจรของกล้อง ไม่ว่าจะเป็นเส้นทางวงกลมแบบคลาสสิกหรือคลื่นไซน์ที่น่าสนใจ
วงโคจรคงที่:
นี่คือวิถีโคจรแบบวงกลมที่ความสูงคงที่และรอบจุดสนใจที่เฉพาะเจาะจง
ดูการทำงานของวงโคจรคงที่โดยสำรวจสำนักงาน Google ในซิดนีย์
การหมุนแบบไดนามิก:
กล้องจะเคลื่อนที่อย่างราบรื่นในวิถีคลื่นไซน์รอบจุดสนใจที่กำหนด การเคลื่อนไหวที่ไม่เหมือนใครนี้ช่วยให้ผู้ชมสังเกตจุดที่น่าสนใจจากความสูงและมุมต่างๆ ได้ ซึ่งจะมอบประสบการณ์ด้านภาพที่สมจริงและมีชีวิตชีวา
ดูการทำงานของวงโคจรแบบไดนามิกโดยสำรวจหอไอเฟล
จุดที่น่าสนใจ (POI):
- ปรับแต่งการสำรวจโดยกำหนดประเภทสถานที่ที่ต้องการค้นพบ เลือกจากพิพิธภัณฑ์ สวนสาธารณะ โรงเรียน และอื่นๆ โดยใช้อาร์เรย์
typesในconfig.json - กำหนดจำนวนจุดที่น่าสนใจสูงสุดที่จะแสดงโดยการปรับพารามิเตอร์
density - ปรับเปลี่ยน
searchRadius (in meters)เพื่อรวมสถานที่น่าสนใจที่ซ่อนอยู่ใกล้เคียงหรือมุ่งเน้นที่พื้นที่เฉพาะ - ตั้งค่าความเร็วที่เลือกสำหรับการเคลื่อนไหวของกล้องด้วยพารามิเตอร์
speed (in revolutions per minute)
การโหลดล่วงหน้า การสำรวจ: เจาะลึกการปรับแต่ง URL
เครื่องมือสำรวจพื้นที่ 3 มิติช่วยให้คุณกำหนดการสำรวจล่วงหน้าได้ด้วยการปรับแต่ง URL ซึ่งจะช่วยลดความจำเป็นในการกำหนดค่าด้วยตนเอง และปรับปรุงประสบการณ์ของผู้ใช้ให้มีประสิทธิภาพยิ่งขึ้น
การสร้าง URL ที่สมบูรณ์แบบ
เพียงเพิ่มพารามิเตอร์ที่เฉพาะเจาะจงต่อท้าย URL ของ Area Explorer เพื่อตั้งค่าตำแหน่งและการตั้งค่าอื่นๆ ไว้ล่วงหน้า เช่น
https://{base-url}/#location.coordinates.lat=40.7424396&location.coordinates.lng=-74.0061439
URL นี้จะกำหนดจุดเริ่มต้นเป็นละติจูดและลองจิจูดที่ระบุ ซึ่งจะนำคุณไปยังตำแหน่งที่เลือกทันที พารามิเตอร์ที่ใช้ได้มีดังนี้
location.coordinates.lat: ละติจูดของสถานที่ตั้งที่คุณเลือกlocation.coordinates.lng: ลองจิจูดของสถานที่ตั้งที่เลือกpoi.types: รายการประเภทจุดที่น่าสนใจที่คั่นด้วยคอมมาที่จะแสดงpoi.density: จำนวน POI สูงสุดที่เลือกpoi.searchRadius: รัศมีสำหรับการค้นหาจุดที่น่าสนใจในบริเวณใกล้เคียงcamera.speed: ความเร็วในการหมุนกล้องcamera.orbitType: ประเภทวงโคจรของกล้อง ("fixed-orbit" หรือ "dynamic-orbit")
ประโยชน์ของการปรับแต่ง URL
- ปรับปรุงประสบการณ์ของผู้ใช้โดยกำหนดการตั้งค่าที่คุณเลือกไว้ล่วงหน้า
- แชร์เส้นทางที่กำหนดเป้าหมายพร้อมสถานที่และจุดที่น่าสนใจที่โหลดไว้ล่วงหน้า
- ฝังประสบการณ์การใช้งาน Area Explorer ที่กำหนดค่าไว้ล่วงหน้าลงในเว็บไซต์ได้อย่างราบรื่น
การใช้ประโยชน์จากการปรับแต่ง URL จะช่วยให้คุณสร้างประสบการณ์ที่ปรับแต่งให้เหมาะกับแต่ละบุคคลและเชิญชวนให้ผู้อื่นเข้าร่วมการผจญภัยที่คัดสรรมาอย่างดีได้
การปรับแต่งเพิ่มเติม
ส่วนก่อนหน้านี้ได้สำรวจการปรับเปลี่ยนที่เข้าถึงได้ผ่าน UI หรือไฟล์การกำหนดค่า อย่างไรก็ตาม ยังมีพารามิเตอร์ในตัวอื่นๆ อีกหลายรายการที่คุณสามารถแก้ไขเพื่อปรับแต่งแอปพลิเคชันเพิ่มเติมได้
หากต้องการทำการปรับแต่งขั้นสูงเหล่านี้ คุณจะต้องดูโค้ดในไฟล์ src/utils/cesium.js ที่อยู่ในไดเรกทอรี src คุณสามารถเปลี่ยนตัวแปรต่อไปนี้เพื่อปรับเปลี่ยนรูปลักษณ์และความรู้สึกของแอปพลิเคชันได้
ความสูงของกล้อง
ควบคุมความสูงของตำแหน่งกล้องเมื่อบินไปยังจุดหนึ่งๆ โดยปรับค่า CAMERA_HEIGHT ค่าที่สูงขึ้นจะให้มุมมองแบบพาโนรามาที่ซูมออกมากขึ้น ส่วนค่าที่ต่ำลงจะช่วยให้คุณเห็นรายละเอียดของพื้นที่ได้ใกล้ขึ้น
// Camera height (in meters) above the target when flying to a point.
const CAMERA_HEIGHT = 100;
- การตั้งค่า:
CAMERA_HEIGHT - ค่าเริ่มต้น: 100
- คำอธิบาย: กำหนดความสูงของกล้องเหนือสถานที่เป้าหมายเมื่อบินไปยังจุดหนึ่งๆ
- ค่าตัวอย่าง
- 50: มุมมองที่ใกล้ขึ้น โดยเน้นรายละเอียด
- 200: มุมมองแบบพาโนรามาที่กว้างขึ้น
ระดับเสียงของกล้อง
การเอียงเริ่มต้นของกล้องจะกำหนดโดย BASE_PITCH ใช้ค่าลบสำหรับการเอียงลงและค่าบวกสำหรับการเอียงขึ้น หากต้องการเพิ่มการเคลื่อนไหวแบบไดนามิกเล็กน้อยให้กับการสำรวจ ให้เปลี่ยน AUTO_ORBIT_PITCH_AMPLITUDE
// Pitch 30 degrees downwards
const BASE_PITCH = -30;
// change the pitch by 10 degrees over time
const AUTO_ORBIT_PITCH_AMPLITUDE = 10;
- การตั้งค่า:
BASE_PITCHและAUTO_ORBIT_PITCH_AMPLITUDE - ค่าเริ่มต้น
BASE_PITCH: -30 (การหมุนรอบแกนขวาง 30 องศาลงด้านล่าง)AUTO_ORBIT_PITCH_AMPLITUDE: 10 (เปลี่ยนระดับเสียง 10 องศาเมื่อเวลาผ่านไป)
คำอธิบาย: ระดับการหมุนกล้องคือการเอียงภาพของแผนที่ ซึ่งวัดเป็นองศา หรือที่เรียกว่าการเอียง การตั้งค่าเหล่านี้จะกำหนดระดับเสียงเริ่มต้นของกล้องและการปรับระดับเสียงแบบไดนามิกระหว่างการหมุนอัตโนมัติ
ค่าตัวอย่าง
BASE_PITCH: 0 (ปรับระดับกล้อง)AUTO_ORBIT_PITCH_AMPLITUDE: 0 (ไม่มีการเปลี่ยนแปลงระดับเสียง)
ระยะและการซูมของกล้อง
พารามิเตอร์เหล่านี้จะกำหนดระดับการซูมที่ใช้เมื่อโฟกัสที่จุดที่เฉพาะเจาะจง ค่าที่น้อยลงหมายถึงการซูมเข้าใกล้มากขึ้น
// Distance variation relative to initial range.
const RANGE_AMPLITUDE_RELATIVE = 0.55;
// Determines how much the camera should zoom in or out
const ZOOM_FACTOR = 20;
การตั้งค่า: RANGE_AMPLITUDE_RELATIVE และ ZOOM_FACTOR
ค่าเริ่มต้น:
RANGE_AMPLITUDE_RELATIVE: 0.55 (ความแปรผันของระยะทางสัมพัทธ์)ZOOM_FACTOR: 20 (ปัจจัยการซูมกล้อง)
คำอธิบาย: การตั้งค่าเหล่านี้จะกำหนดความแปรผันของช่วงระหว่างการเคลื่อนไหวของกล้องและระดับการซูมเพื่อดูภาพที่ใกล้ขึ้น
ค่าตัวอย่าง:
RANGE_AMPLITUDE_RELATIVE: 1 (ค่าต่างแบบเต็มช่วง)ZOOM_FACTOR: 10 (ซูมน้อยลง)
// Camera heading (rotation), pitch (tilt), and range (distance) for resetting view.
const CAMERA_OFFSET = {
heading: 0, // No rotation offset.
pitch: Cesium.Math.toRadians(BASE_PITCH),
range: 800, // 800 meters from the center.
};
รีเซ็ตกล้อง
เมื่อผู้ใช้ต้องการรีเซ็ตกล้องกลับไปยังตำแหน่งเดิม ระบบจะใช้ค่า CAMERA_OFFSET การตั้งค่านี้รวมถึงทิศทาง (การหมุน) ระดับความสูง (การเอียง) และระยะ (ระยะห่างของกล้องจากจุดศูนย์กลาง)
- การตั้งค่า:
CAMERA_OFFSET - ค่าเริ่มต้น
heading: 0 (ไม่มีออฟเซ็ตการหมุน)pitch: Cesium.Math.toRadians(-30) (การหมุนรอบแกนขวาง 30 องศาลงด้านล่าง)range: 800 (800 เมตรจากศูนย์กลาง)
- คำอธิบาย: กำหนดทิศทางกล้อง ระดับเสียง และช่วงสำหรับการรีเซ็ตมุมมอง
- ค่าตัวอย่าง
heading: 45 (องศา, มุมมองทิศตะวันตกเฉียงเหนือ)range: 1,500 เมตร (ห่างจากศูนย์กลางออกไป)
พิกัดเริ่มต้น:
START_COORDINATES จะกำหนดลองจิจูด ละติจูด และความสูงเริ่มต้นของกล้อง นี่คือจุดเริ่มต้นของการสำรวจ ดังนั้นให้ตั้งค่าเป็นพื้นที่ที่คุณต้องการให้ผู้ใช้เห็นเป็นอันดับแรก
// Default camera start position in longitude, latitude, and altitude.
const START_COORDINATES = {
longitude: 0,
latitude: 60,
height: 15000000, // 15,000 km above the surface
};
- การตั้งค่า:
START_COORDINATES ค่าเริ่มต้น:
longitude: 0latitude: 60height: 15000000 (15,000 กม. เหนือพื้นผิว)
ค่าตัวอย่าง:
longitude: -122.4934,latitude: 37.7951 (สะพานโกลเดนเกต)height: 2000 (ตำแหน่งเริ่มต้นที่ใกล้กว่า)
โหลดสถานที่ตั้งที่กำหนดไว้ล่วงหน้า
ออบเจ็กต์ location ใน config.json จะกำหนดจุดศูนย์กลางของพื้นที่ ซึ่งเป็นจุดชมวิวเริ่มต้นของกล้องในโปรแกรมดู Cesiumcoordinates กำหนดละติจูด (lat) และลองจิจูด (lng) สำหรับตำแหน่งที่คุณต้องการให้กล้องแพนไปก่อน ปรับค่าเหล่านี้เพื่อตั้งค่ากล้องไปยังตำแหน่งที่ต้องการบนโลก
{
"location": {
"coordinates": { "lat": null, "lng": null }
},
การกำหนดค่านี้ช่วยให้คุณเริ่มแอปพลิเคชัน 3D Place Navigator โดยซูมเข้าในสถานที่ที่ต้องการได้ คุณสามารถใช้เครื่องมือการเข้ารหัสพิกัดภูมิศาสตร์ของ Google เพื่อรับพิกัดละติจูดและลองจิจูดของที่อยู่หรือชื่อสถานที่ได้โดยระบุไว้ในออบเจ็กต์สถานที่ตั้ง ดังนี้
- เข้าถึงเครื่องมือเข้ารหัสพิกัดภูมิศาสตร์
- สร้างคำขอการเข้ารหัสพิกัดภูมิศาสตร์ คลิกส่วน "ลองด้วยตนเอง" แล้วป้อนสถานที่ตั้งที่เลือกในช่อง "ที่อยู่" คุณสามารถระบุที่อยู่ ชื่อสถานที่ หรือแม้แต่จุดสังเกตได้
- สร้างพิกัด คลิกปุ่ม "เรียกใช้" เพื่อส่งคำขอ เครื่องมือจะแสดงผลการตอบกลับที่มีข้อมูลต่างๆ เกี่ยวกับสถานที่ รวมถึงพิกัดละติจูดและลองจิจูดที่แสดงในส่วน
geometry.location - ใช้รหัสพิกัดภูมิศาสตร์ คัดลอกค่าละติจูดและลองจิจูดที่ดึงมาจากคำตอบ แล้ววางลงในออบเจ็กต์
coordinatesภายในการกำหนดค่าของคุณ
หมายเหตุ: รหัสพิกัดภูมิศาสตร์ที่ใช้ในลักษณะนี้ต้องเป็นไปตามข้อกำหนดที่ระบุไว้ในข้อกำหนดในการให้บริการของ Google Maps Platform ส่วนที่ 3.4 ซึ่งระบุว่าต้องไม่แคชรหัสพิกัดภูมิศาสตร์ไว้นานเกิน 30 วัน และต้องรีเฟรชหลังจากนั้น

การกำหนดค่านี้จะใช้เครื่องมือการเข้ารหัสพิกัดภูมิศาสตร์เพื่อระบุพิกัดของสำนักงานใหญ่ของ Google ในเมาน์เทนวิว แคลิฟอร์เนียโดยอัตโนมัติ และเปิดแอปพลิเคชัน 3D Place Navigator โดยให้กล้องอยู่ตรงกลางตำแหน่งนั้น
การปรับแต่งขั้นสูง
คุณสามารถปรับแต่งเพิ่มเติมได้โดยเจาะลึกโค้ด ส่วนต่อไปนี้จะอธิบายตัวเลือกบางอย่าง
เพิ่มเส้นทางกล้องใหม่
โซลูชันนี้ใช้เส้นทางกล้อง 2 เส้นทางที่แตกต่างกันโดยค่าเริ่มต้น ดังนี้
fixed-orbit" | "dynamic-orbit"
แต่หากต้องการสร้างเส้นทางกล้องใหม่ คุณสามารถใช้
/src/utils/cesium.js ในฟังก์ชัน calculateAutoOrbitFrame
หากต้องการใช้การคำนวณเส้นทางใหม่นี้ในแผงการกำหนดค่า โปรดดูการติดตั้งใช้งานใน demo/src/camera-settings.js.
เพิ่มประเภทสถานที่อีก
คุณปรับรายการประเภทสถานที่สำหรับการกำหนดค่าได้ในไฟล์ demo/src/place-settings.js ตั้งแต่บรรทัดที่ 4 เป็นต้นไปคือประเภทสถานที่ที่ใช้ได้ในการสาธิต
หากต้องการใช้ประเภทสถานที่ที่เฉพาะเจาะจงโดยไม่เปลี่ยนแหล่งที่มาของการสาธิต คุณสามารถเพิ่มประเภทสถานที่เหล่านั้นลงในไฟล์ config.json ในส่วน poi.types
ปรับแต่งสไตล์ (CSS)
สำหรับสไตล์ เราใช้ตัวแปร CSS เบราว์เซอร์หลักๆ ทั้งหมดรองรับตัวแปรเหล่านี้ และทำให้สามารถเปลี่ยนบรรทัดเดียวในตำแหน่งส่วนกลางและอัปเดตพร็อพเพอร์ตี้ CSS ที่เฉพาะเจาะจงได้ ตัวแปร CSS ของเรากำหนดไว้ใน src/main.css. ซึ่งคุณสามารถปรับสี การตั้งค่าแบบอักษร และระยะห่างจากขอบหรือระยะขอบสำหรับทั้งแอปพลิเคชันได้
วางซ้อนข้อมูลเพิ่มเติม
หากต้องการวางซ้อนข้อมูลเพิ่มเติม คุณต้องอัปเดตไฟล์ src/utils/cesium.js และดูเอกสารประกอบของ Cesium เกี่ยวกับวิธีเพิ่ม GeoJSON หรือข้อมูลที่อ้างอิงทางภูมิศาสตร์อื่นๆ ลงในโลกจำลอง
นำส่วนการกำหนดค่าออก
แอปพลิเคชัน JavaScript ของเรามี 3 ส่วนหลักในไฟล์การกำหนดค่า ได้แก่ demo/src/[config-panel.js](config-panel.js): location, poi และ camera แต่ละส่วนเหล่านี้มีตัวเลือกการกำหนดค่าสำหรับแง่มุมต่างๆ ของแอปพลิเคชัน นักพัฒนาแอปสามารถปรับแต่งส่วนเหล่านี้
ตามความต้องการที่เฉพาะเจาะจงได้
1.นำส่วนที่เฉพาะเจาะจงออกจากการกำหนดค่า
- ส่วนสถานที่ตั้ง
หากต้องการนำส่วน location ออก ให้ค้นหาบรรทัดต่อไปนี้ในโค้ด แล้วใส่เครื่องหมายคอมเมนต์หรือลบบรรทัดนั้น
const locationConfig = { ...config.location, ...customConfig.location };
- ส่วนจุดที่น่าสนใจ
หากต้องการนำส่วน poi ออก ให้ค้นหาบรรทัดต่อไปนี้ในโค้ดและแสดงความคิดเห็นหรือลบออก
const poiConfig = { ...config.poi, ...customConfig.poi };
- ส่วนกล้อง
หากต้องการนำส่วน camera ออก ให้ค้นหาบรรทัดต่อไปนี้ในโค้ดและแสดงความคิดเห็นหรือลบออก
const cameraConfig = { ...config.camera, ...customConfig.camera };
2. อัปเดตการกำหนดค่าแบบรวม
หลังจากนำส่วนออกแล้ว คุณต้องอัปเดตออบเจ็กต์การกำหนดค่าแบบรวม ออบเจ็กต์นี้จะผสานการกำหนดค่าเริ่มต้นกับการปรับแต่งต่างๆ
นำพร็อพเพอร์ตี้ที่เกี่ยวข้องออกจากออบเจ็กต์ combinedConfig ดังนี้
const combinedConfig = {
location: { ...config.location, ...customConfig.location }, // Remove if location section is removed
poi: { ...config.poi, ...customConfig.poi }, // Remove if poi section is removed
camera: { ...config.camera, ...customConfig.camera }, // Remove if camera section is removed
};
3. ปรับองค์ประกอบ UI
หากการนำส่วนออกหมายถึงการนำองค์ประกอบ UI ที่เกี่ยวข้องออกด้วย ให้อัปเดตโค้ดตามความเหมาะสมในโค้ด HTML ตัวอย่างเช่น หากต้องการนำส่วนที่เฉพาะเจาะจงออกจากแผงการดูแลระบบ เช่น ความเร็วของกล้อง คุณต้องอัปเดตทั้งโค้ด JS และโค้ด HTML สำหรับส่วนนั้น
4. นำส่วนการตั้งค่ากล้องออก
หากต้องการนำส่วนการตั้งค่ากล้องออกจาก UI ให้ค้นหาบรรทัดต่อไปนี้แล้วใส่เครื่องหมายคอมเมนต์หรือลบออก
const cameraSettingsSecgetCameraSettingsSection(cameraConfig);
สรุปการนำส่วนสถานที่ตั้งออก
const locationSection = await getLocationSettingsSection(locationConfig);
บทสรุป
ในเอกสารนี้ เราได้สำรวจตัวเลือกการปรับแต่งต่างๆ ที่มีใน Area Explorer เพื่อปรับแต่งประสบการณ์การสำรวจ 3 มิติของคุณ การปรับเปลี่ยนลักษณะการทำงานของกล้อง การปรับการเอียงภาพ และการเปลี่ยนระดับการซูมจะช่วยให้คุณสร้างประสบการณ์ที่ไม่เหมือนใครและน่าสนใจซึ่งแสดงการตั้งค่าและจุดที่น่าสนใจที่คุณเลือกได้
อย่าลืมทดลองใช้การกำหนดค่าต่างๆ และปรับแต่งพารามิเตอร์ให้เหมาะกับความต้องการเฉพาะของคุณ การใช้ประโยชน์จากความสามารถในการปรับแต่งจะช่วยให้คุณสร้างเส้นทางที่สมจริงและปรับเปลี่ยนในแบบของคุณ ซึ่งจะดึงดูดผู้ชมและทำให้วิสัยทัศน์ของคุณเป็นจริงได้