شما می توانید اشکال مختلفی را به نقشه خود اضافه کنید. شکل یک شی روی نقشه است که به یک سیستم مختصات LatLng
گره خورده است. Photorealistic 3D Maps در Maps JavaScript API از افزودن خطوط و چند ضلعی به نقشه پشتیبانی می کند.
چند خط
برای ترسیم یک خط روی نقشه، از چند خط استفاده کنید. کلاس Polyline3DElement
یک همپوشانی خطی از بخش های خط متصل را روی نقشه تعریف می کند. یک شی Polyline
از آرایهای از مکانهای LatLng
تشکیل شده است و یک سری پاره خط ایجاد میکند که آن مکانها را در یک دنباله مرتب به هم متصل میکند.
چند خط اضافه کنید
سازنده Polyline
مجموعهای از Polyline3DElementOptions
را میگیرد که مختصات LatLng
خط و مجموعهای از سبکها را برای تنظیم رفتار بصری polyline مشخص میکند.
اشیاء چند خطی به صورت مجموعه ای از بخش های مستقیم روی نقشه ترسیم می شوند. میتوانید رنگها، عرضها، تیرگیها، ارتفاعات و گزینههای استایل هندسی سفارشی را برای خط خط در Polyline3DElementOptions
هنگام ساخت خط خود مشخص کنید، یا میتوانید آن ویژگیها را پس از ساخت تغییر دهید. یک پلی لاین از سبک های stroke زیر پشتیبانی می کند:
-
outerColor
: یک رنگ HTML هگزادسیمال با فرمت"#FFFFFF"
. -
outerWidth
: یک مقدار عددی بین0.0
و1.0
که به عنوان درصدی ازstrokeWidth
تفسیر می شود. -
strokeColor
: یک رنگ HTML هگزادسیمال با فرمت"#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
می توانند اشکال پیچیده را توصیف کنند، از جمله:
- چندین ناحیه غیر پیوسته که توسط یک چند ضلعی تعریف شده اند.
- نواحی دارای سوراخ در آنها.
- تقاطع های یک یا چند منطقه.
برای تعریف یک شکل پیچیده، از یک چند ضلعی با چندین مسیر استفاده می کنید.
یک چند ضلعی اضافه کنید
از آنجایی که یک ناحیه چند ضلعی ممکن است شامل چندین مسیر مجزا باشد، ویژگی مسیرهای شی Polygon
آرایهای از آرایهها را مشخص میکند، هر کدام از نوع MVCArray
. هر آرایه دنباله جداگانه ای از مختصات LatLng
مرتب شده را تعریف می کند.
برای چند ضلعی های اصلی که فقط از یک مسیر تشکیل شده اند، می توانید با استفاده از یک آرایه از مختصات LatLng
یک Polygon
بسازید. نقشههای سهبعدی فوتورئالیستی در 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();