คุณเพิ่มรูปร่างต่างๆ ลงในแผนที่ได้ รูปร่างคือวัตถุบนแผนที่ที่เชื่อมโยงกับLatLng
ระบบพิกัด แผนที่ 3 มิติที่เหมือนภาพถ่ายใน Maps JavaScript API รองรับการเพิ่มเส้นและรูปหลายเหลี่ยมลงในแผนที่
เส้นประกอบ
หากต้องการวาดเส้นบนแผนที่ ให้ใช้เส้นประกอบ คลาส
Polyline3DElement
จะกำหนดการวางซ้อนเชิงเส้นของส่วนของเส้นที่เชื่อมต่อกันบนแผนที่ ออบเจ็กต์ Polyline
ประกอบด้วยอาร์เรย์ของตำแหน่ง LatLng
และสร้างชุดส่วนของเส้นที่เชื่อมต่อตำแหน่งเหล่านั้นตามลําดับ
เพิ่มเส้นประกอบ
ตัวสร้าง Polyline
จะรับชุด Polyline3DElementOptions
ที่ระบุ LatLng
พิกัดของเส้น และชุดสไตล์เพื่อปรับลักษณะการแสดงผลของเส้นประกอบ
ระบบจะวาดออบเจ็กต์เส้นประกอบเป็นชุดของเส้นตรงบนแผนที่ คุณสามารถระบุตัวเลือกสี ความกว้าง ความทึบ ความสูง และรูปแบบเรขาคณิตที่กำหนดเองสำหรับเส้นโครงร่างของเส้นภายใน Polyline3DElementOptions
เมื่อสร้างเส้น หรือจะเปลี่ยนพร็อพเพอร์ตี้เหล่านั้นหลังจากสร้างเส้นแล้วก็ได้ เส้นประกอบรองรับรูปแบบเส้นขีดต่อไปนี้
outerColor
: สี HTML แบบฐาน 16 ของรูปแบบ"#FFFFFF"
outerWidth
: ค่าตัวเลขระหว่าง0.0
ถึง1.0
ซึ่งจะตีความเป็นเปอร์เซ็นต์ของstrokeWidth
strokeColor
: สี HTML แบบฐาน 16 ของรูปแบบ"#FFFFFF"
strokeWidth
: ความกว้างของเส้นเป็นพิกเซลgeodesic
: ขอบของรูปหลายเหลี่ยมจะเป็นไปตามความโค้งของโลกหรือวาดเป็นเส้นตรงaltitudeMode
: วิธีตีความองค์ประกอบระดับความสูงในพิกัดdrawsOccludedSegments
: บูลีนที่ระบุว่าควรวาดส่วนที่บดบังด้วยวัตถุ (เช่น อาคาร) ของรูปหลายเหลี่ยมหรือไม่extruded
: บูลีนที่ระบุว่าควรเชื่อมต่อเส้นประกอบกับพื้นดินหรือไม่
async function init() {
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map = new Map3DElement({
center: { lat: 37.772675996068915, lng: -122.3978382542777, altitude: 2500 },
tilt: 45,
heading: 5.9743656,
mode: MapMode.HYBRID,
});
const { Polyline3DElement, AltitudeMode } = await google.maps.importLibrary("maps3d");
const polylineOptions = {
strokeColor: "#EA433580",
strokeWidth: 10,
altitudeMode: "ABSOLUTE",
extruded: true,
drawsOccludedSegments: true,
}
const polyline = new google.maps.maps3d.Polyline3DElement(polylineOptions)
polyline.coordinates = [
{lat: 37.80515638571346, lng: -122.4032569467164},
{lat: 37.80337073509504, lng: -122.4012878349353},
{lat: 37.79925208843463, lng: -122.3976697250461},
{lat: 37.7989102378512, lng: -122.3983408725656},
{lat: 37.79887832784348, lng: -122.3987094864192},
{lat: 37.79786443410338, lng: -122.4066878788802},
{lat: 37.79549248916587, lng: -122.4032992702785},
{lat: 37.78861484290265, lng: -122.4019489189814},
{lat: 37.78618687561075, lng: -122.398969592545},
{lat: 37.7892310309145, lng: -122.3951458683092},
{lat: 37.7916358762409, lng: -122.3981969390652}
];
map.append(polyline)
document.body.append(map);
}
init();
เส้นประกอบแบบอินเทอร์แอกทีฟ
ตัวอย่างต่อไปนี้จะเปลี่ยนสีเส้นโครงร่างของเส้นประกอบหลังจากบันทึกเหตุการณ์การคลิก
async function init() {
const colors = ["red", "blue", "green", "yellow"];
const { Map3DElement, MapMode, Polyline3DInteractiveElement } = await google.maps.importLibrary("maps3d");
const map = new Map3DElement({
center: {lat: 0, lng: -180, altitude: 15000000},
mode: MapMode.HYBRID,
});
document.body.append(map);
const polyline = new Polyline3DInteractiveElement({
coordinates: [
{ lat: 37.772, lng: -122.214 },
{ lat: 21.291, lng: -157.821 },
{ lat: -18.142, lng: 178.431 },
{ lat: -27.467, lng: 153.027 }
],
strokeColor: 'red',
strokeWidth: 10,
});
polyline.addEventListener('gmp-click', (event) => {
polyline.strokeColor = colors[~~(Math.random() * colors.length)];
});
map.append(polyline);
}
init();
รูปหลายเหลี่ยม
รูปหลายเหลี่ยมแสดงถึงพื้นที่ที่ล้อมรอบด้วยเส้นทางแบบปิด (หรือลูป) ซึ่งกำหนดโดยชุดพิกัด
ออบเจ็กต์ Polygon
คล้ายกับออบเจ็กต์ Polyline
ตรงที่ประกอบด้วยชุดพิกัดตามลําดับ รูปหลายเหลี่ยมจะวาดด้วยเส้นและสีพื้น
คุณสามารถกำหนดสีและขนาดที่กำหนดเองสำหรับขอบของรูปหลายเหลี่ยม (เส้นโครงร่าง) และสีและความทึบที่กำหนดเองสำหรับพื้นที่ปิด (การเติม) สีควรระบุในรูปแบบ HTML ฐานสิบหก ไม่รองรับชื่อสี
ออบเจ็กต์ Polygon
สามารถอธิบายรูปร่างที่ซับซ้อนได้ ซึ่งรวมถึง
- พื้นที่หลายแห่งที่ไม่ต่อเนื่องกันซึ่งกำหนดโดยรูปหลายเหลี่ยมรูปเดียว
- บริเวณที่มีรู
- จุดตัดของพื้นที่อย่างน้อย 1 พื้นที่
หากต้องการกําหนดรูปร่างที่ซับซ้อน ให้ใช้รูปหลายเหลี่ยมที่มีหลายเส้นทาง
เพิ่มรูปหลายเหลี่ยม
เนื่องจากพื้นที่รูปหลายเหลี่ยมอาจมีเส้นทางแยกกันหลายเส้นทาง พร็อพเพอร์ตี้ paths ของPolygon
ออบเจ็กต์จึงระบุอาร์เรย์ของอาร์เรย์ ซึ่งแต่ละรายการมีประเภทเป็น MVCArray
อาร์เรย์แต่ละรายการจะกำหนดลำดับพิกัด LatLng
ที่เรียงลำดับแยกกัน
สำหรับรูปหลายเหลี่ยมพื้นฐานที่มีเพียงเส้นทางเดียว คุณสามารถสร้าง Polygon
โดยใช้อาร์เรย์ของพิกัด LatLng
รายการเดียว แผนที่ 3 มิติที่เหมือนจริงใน Maps JavaScript API จะแปลงอาร์เรย์เป็นอาร์เรย์ของอาร์เรย์เมื่อสร้างและจัดเก็บไว้ในพร็อพเพอร์ตี้ outerCoordinates
async function init() {
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map3DElement = new Map3DElement({
center: { lat: 43.6425, lng: -79.3871, altitude: 400 },
range: 1000,
tilt: 60,
mode: MapMode.SATELLITE,
});
const { Polygon3DElement, AltitudeMode } = await google.maps.importLibrary("maps3d");
const polygonOptions = {
strokeColor: "#EA433580",
strokeWidth: 4,
fillColor: "#0000FF80",
altitudeMode: "ABSOLUTE",
extruded: true,
drawsOccludedSegments: true,
}
const towerPolygon = new google.maps.maps3d.Polygon3DElement(polygonOptions);
towerPolygon.outerCoordinates = [
{ lat: 43.6427196, lng: -79.3876802, altitude: 600 },
{ lat: 43.6421742, lng: -79.3869184, altitude: 600 },
{ lat: 43.643001, lng: -79.3866475, altitude: 600 }
];
map3DElement.append(towerPolygon);
document.body.append(map3DElement);
}
init();
รูปหลายเหลี่ยมแบบอินเทอร์แอกทีฟ
ตัวอย่างต่อไปนี้จะเปลี่ยนสีเส้นโครงร่างของรูปหลายเหลี่ยมหลังจากบันทึกเหตุการณ์การคลิก
async function init() {
const colors = ["red", "blue", "green", "yellow"];
const { Map3DElement, MapMode } = await google.maps.importLibrary("maps3d");
const map3DElement = new Map3DElement({
center: { lat: 43.6425, lng: -79.3871, altitude: 400 },
range: 1000,
tilt: 60,
mode: MapMode.SATELLITE,
});
const { Polygon3DInteractiveElement, AltitudeMode } = await google.maps.importLibrary("maps3d");
const polygonOptions = {
strokeColor: "#EA433580",
strokeWidth: 4,
fillColor: "#0000FF80",
altitudeMode: "ABSOLUTE",
extruded: true,
drawsOccludedSegments: true,
}
const towerPolygon = new google.maps.maps3d.Polygon3DInteractiveElement(polygonOptions);
towerPolygon.outerCoordinates = [
{ lat: 43.6427196, lng: -79.3876802, altitude: 600 },
{ lat: 43.6421742, lng: -79.3869184, altitude: 600 },
{ lat: 43.643001, lng: -79.3866475, altitude: 600 }
];
towerPolygon.addEventListener('gmp-click', (event) => {
towerPolygon.strokeColor = colors[~~(Math.random() * colors.length)];
});
map3DElement.append(towerPolygon);
document.body.append(map3DElement);
}
init();