يمكنك إضافة أشكال مختلفة إلى خريطتك. الشكل هو عنصر على الخريطة مرتبط بنظام إحداثيات LatLng. تتيح "خرائط ثلاثية الأبعاد لصور واقعية" في Maps JavaScript API إضافة خطوط ومضلّعات إلى الخريطة.
الخطوط المتعددة
لرسم خط على خريطتك، استخدِم خطًا متعدد الأضلاع. يحدّد الصف
Polyline3DElement
تراكبًا خطيًا من المقاطع الخطية المرتبطة على الخريطة. يتكوّن عنصر Polyline من مصفوفة من المواقع الجغرافية LatLng، وينشئ سلسلة من مقاطع الخطوط التي تربط هذه المواقع الجغرافية في تسلسل مرتّب.
إضافة خطوط متعددة
يأخذ الدالة الإنشائية Polyline مجموعة من Polyline3DElementOptions تحدّد إحداثيات LatLng للخط ومجموعة من الأنماط لتعديل السلوك المرئي للخط المتعدد الأضلاع.
يتم رسم عناصر الخط المتعدد على شكل سلسلة من المقاطع المستقيمة على الخريطة. يمكنك تحديد ألوان وعرض وشفافية وارتفاع وخيارات أنماط هندسية مخصّصة لخطوط الأشكال ضمن Polyline3DElementOptions عند إنشاء خطوط الأشكال، أو يمكنك تغيير هذه الخصائص بعد الإنشاء. تتيح الخطوط المتعددة أنماط الخطوط التالية:
outerColor: لون HTML سداسي عشري بالتنسيق "#FFFFFF"
outerWidth: قيمة رقمية بين 0.0 و1.0، ويتم تفسيرها كنسبة مئوية من strokeWidth.
strokeColor: لون HTML سداسي عشري بالتنسيق "#FFFFFF"
strokeWidth: تمثّل عرض الخط بالبكسل.
geodesic: ما إذا كانت حواف المضلّع تتبع انحناء الأرض أو يتم رسمها كخطوط مستقيمة.
altitudeMode: كيفية تفسير مكوّنات الارتفاع في الإحداثيات
drawsOccludedSegments: قيمة منطقية تشير إلى ما إذا كان يجب رسم أجزاء المضلّع التي تحجبها عناصر (مثل المباني).
extruded: قيمة منطقية تشير إلى ما إذا كان يجب ربط الخط المتعدد الأضلاع بالأرض.
يمثّل المضلّع مساحة محاطة بمسار مغلق (أو حلقة)، ويتم تحديده من خلال سلسلة من الإحداثيات.
تشبه كائنات Polygon كائنات Polyline في أنّها تتألف من سلسلة من الإحداثيات في تسلسل مرتّب. يتم رسم المضلّعات باستخدام خطوط خارجية وتعبئة.
يمكنك تحديد ألوان وعرض مخصّصين لحافة المضلّع (الحدود) وألوان ودرجات شفافية مخصّصة للمساحة المحيطة (التعبئة). يجب الإشارة إلى الألوان بتنسيق HTML السداسي العشري. لا يمكن استخدام أسماء الألوان.
يمكن أن تصف عناصر Polygon الأشكال المعقّدة، بما في ذلك:
مناطق متعدّدة غير متجاورة محدّدة بمضلّع واحد
المناطق التي تحتوي على ثقوب
تقاطعات منطقة واحدة أو أكثر
لتحديد شكل معقّد، يمكنك استخدام مضلّع يتضمّن مسارات متعدّدة.
إضافة مضلّع
بما أنّ المنطقة المضلّعة قد تتضمّن عدة مسارات منفصلة، تحدّد السمة paths الخاصة بالكائن Polygon مصفوفة من المصفوفات، كلّ منها من النوع MVCArray.
يحدّد كل صفيف تسلسلاً منفصلاً من إحداثيات LatLng مرتّبة.
بالنسبة إلى المضلّعات الأساسية التي تتألف من مسار واحد فقط، يمكنك إنشاء Polygon
باستخدام مصفوفة واحدة من إحداثيات LatLng. ستحوّل "خرائط ثلاثية الأبعاد لصور واقعية" في Maps JavaScript API المصفوفة إلى مصفوفة من المصفوفات عند إنشائها عند تخزينها ضمن السمة outerCoordinates.
تاريخ التعديل الأخير: 2025-08-12 (حسب التوقيت العالمي المتفَّق عليه)
[null,null,["تاريخ التعديل الأخير: 2025-08-12 (حسب التوقيت العالمي المتفَّق عليه)"],[],[],null,["Select platform: [Android](/maps/documentation/maps-3d/android-sdk/add-polygons \"View this page for the Android platform docs.\") [iOS](/maps/documentation/maps-3d/ios-sdk/add-polygons \"View this page for the iOS platform docs.\")\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n| This product or feature is in Preview (pre-GA). Pre-GA products and features might have limited support, and changes to pre-GA products and features might not be compatible with other pre-GA versions. Pre-GA Offerings are covered by the [Google\n| Maps Platform Service Specific Terms](https://cloud.google.com/maps-platform/terms/maps-service-terms). For more information, see the [launch stage\n| descriptions](/maps/launch-stages).\n\n\u003cbr /\u003e\n\nYou can add various shapes to your map. A shape is an object on the map, tied to\na `LatLng` coordinate system. The Photorealistic 3D Maps in Maps JavaScript API supports the addition of\nlines and polygons to the map.\n\nPolylines\n\nTo draw a line on your map, use a polyline. The\n[`Polyline3DElement`](/maps/documentation/javascript/reference/3d-map#Polyline3DElement)\nclass defines a linear overlay of connected line segments on the map. A\n`Polyline` object consists of an array of `LatLng` locations, and creates a\nseries of line segments that connect those locations in an ordered sequence.\n\nAdd a polyline\n\nThe `Polyline` constructor takes a set of `Polyline3DElementOptions` specifying\nthe `LatLng` coordinates of the line and a set of styles to adjust the\npolyline's visual behavior.\n\nPolyline objects are drawn as a series of straight segments on the map. You can\nspecify custom colors, widths, opacities, heights, and geometric styling options\nfor the stroke of the line within the `Polyline3DElementOptions` when\nconstructing your line, or you can change those properties after construction. A\npolyline supports the following stroke styles:\n\n- `outerColor`: A hexadecimal HTML color of the format `\"#FFFFFF\"`.\n- `outerWidth`: A numerical value between `0.0` and `1.0`, which is interpreted as a percentage of the `strokeWidth`.\n- `strokeColor`: A hexadecimal HTML color of the format `\"#FFFFFF\"`.\n- `strokeWidth`: The width of the line in pixels.\n- `geodesic`: whether the edges of the polyon follows the curvature of the earth, or be drawn as straight lines.\n- `altitudeMode`: How altitude components in the coordinates are interpreted\n- `drawsOccludedSegments`: A boolean indicating whether parts of the polygon obscured by objects (such as buildings) should be drawn.\n- `extruded`: A boolean indicating if the polyline should be connected to the ground.\n\n async function init() {\n const { Map3DElement, MapMode } = await google.maps.importLibrary(\"maps3d\");\n\n const map = new Map3DElement({\n center: { lat: 37.772675996068915, lng: -122.3978382542777, altitude: 2500 },\n tilt: 45,\n heading: 5.9743656,\n mode: MapMode.HYBRID,\n });\n\n const { Polyline3DElement, AltitudeMode } = await google.maps.importLibrary(\"maps3d\");\n\n const polylineOptions = {\n strokeColor: \"#EA433580\",\n strokeWidth: 10,\n altitudeMode: \"ABSOLUTE\",\n extruded: true,\n drawsOccludedSegments: true,\n }\n const polyline = new google.maps.maps3d.Polyline3DElement(polylineOptions)\n\n polyline.coordinates = [\n {lat: 37.80515638571346, lng: -122.4032569467164},\n {lat: 37.80337073509504, lng: -122.4012878349353},\n {lat: 37.79925208843463, lng: -122.3976697250461},\n {lat: 37.7989102378512, lng: -122.3983408725656},\n {lat: 37.79887832784348, lng: -122.3987094864192},\n {lat: 37.79786443410338, lng: -122.4066878788802},\n {lat: 37.79549248916587, lng: -122.4032992702785},\n {lat: 37.78861484290265, lng: -122.4019489189814},\n {lat: 37.78618687561075, lng: -122.398969592545},\n {lat: 37.7892310309145, lng: -122.3951458683092},\n {lat: 37.7916358762409, lng: -122.3981969390652}\n ];\n\n map.append(polyline)\n document.body.append(map);\n }\n init();\n\nInteractive polylines\n\nThe following example changes the polyline's stroke color after registering a\nclick event. \n\n async function init() {\n const colors = [\"red\", \"blue\", \"green\", \"yellow\"];\n const { Map3DElement, MapMode, Polyline3DInteractiveElement } = await google.maps.importLibrary(\"maps3d\");\n const map = new Map3DElement({\n center: {lat: 0, lng: -180, altitude: 15000000},\n mode: MapMode.HYBRID,\n });\n\n document.body.append(map);\n const polyline = new Polyline3DInteractiveElement({\n coordinates: \\[\n { lat: 37.772, lng: -122.214 },\n { lat: 21.291, lng: -157.821 },\n { lat: -18.142, lng: 178.431 },\n { lat: -27.467, lng: 153.027 }\n \\],\n strokeColor: 'red',\n strokeWidth: 10,\n });\n polyline.addEventListener('gmp-click', (event) =\\\u003e {\n polyline.strokeColor = colors\\[\\~\\~(Math.random() \\* colors.length)\\];\n });\n map.append(polyline);\n }\n\n init();\n\nPolygons\n\nA polygon represents an area enclosed by a closed path (or loop), which is\ndefined by a series of coordinates.\n[`Polygon`](/maps/documentation/javascript/reference/3d-map#Polygon3DElement)\nobjects are similar to `Polyline` objects in that they consist of a series of\ncoordinates in an ordered sequence. Polygons are drawn with a stroke and a fill.\nYou can define custom colors and widths for the edge of the polygon (the stroke)\nand custom colors and opacities for the enclosed area (the fill). Colors should\nbe indicated in hexadecimal HTML format. Color names are not supported.\n\n`Polygon` objects can describe complex shapes, including:\n\n- Multiple non-contiguous areas defined by a single polygon.\n- Areas with holes in them.\n- Intersections of one or more areas.\n\nTo define a complex shape, you use a polygon with multiple paths.\n\nAdd a polygon\n\nBecause a polygonal area may include several separate paths, the `Polygon`\nobject's paths property specifies an array of arrays, each of type `MVCArray`.\nEach array defines a separate sequence of ordered `LatLng` coordinates.\n\nFor basic polygons consisting of only one path, you can construct a `Polygon`\nusing a single array of `LatLng` coordinates. The Photorealistic 3D Maps in Maps JavaScript API will\nconvert the array into an array of arrays upon construction when storing\nit within the `outerCoordinates` property. \n\n async function init() {\n const { Map3DElement, MapMode } = await google.maps.importLibrary(\"maps3d\");\n\n const map3DElement = new Map3DElement({\n center: { lat: 43.6425, lng: -79.3871, altitude: 400 },\n range: 1000,\n tilt: 60,\n mode: MapMode.SATELLITE,\n });\n\n const { Polygon3DElement, AltitudeMode } = await google.maps.importLibrary(\"maps3d\");\n\n const polygonOptions = {\n strokeColor: \"#EA433580\",\n strokeWidth: 4,\n fillColor: \"#0000FF80\",\n altitudeMode: \"ABSOLUTE\",\n extruded: true,\n drawsOccludedSegments: true,\n }\n\n const towerPolygon = new google.maps.maps3d.Polygon3DElement(polygonOptions);\n\n towerPolygon.outerCoordinates = [\n { lat: 43.6427196, lng: -79.3876802, altitude: 600 },\n { lat: 43.6421742, lng: -79.3869184, altitude: 600 },\n { lat: 43.643001, lng: -79.3866475, altitude: 600 }\n ];\n\n map3DElement.append(towerPolygon);\n document.body.append(map3DElement);\n }\n init();\n\nInteractive polygons\n\nThe following example changes the polygon's stroke color after registering a\nclick event. \n\n async function init() {\n const colors = [\"red\", \"blue\", \"green\", \"yellow\"];\n const { Map3DElement, MapMode } = await google.maps.importLibrary(\"maps3d\");\n\n const map3DElement = new Map3DElement({\n center: { lat: 43.6425, lng: -79.3871, altitude: 400 },\n range: 1000,\n tilt: 60,\n mode: MapMode.SATELLITE,\n });\n const { Polygon3DInteractiveElement, AltitudeMode } = await google.maps.importLibrary(\"maps3d\");\n const polygonOptions = {\n strokeColor: \"#EA433580\",\n strokeWidth: 4,\n fillColor: \"#0000FF80\",\n altitudeMode: \"ABSOLUTE\",\n extruded: true,\n drawsOccludedSegments: true,\n }\n const towerPolygon = new google.maps.maps3d.Polygon3DInteractiveElement(polygonOptions);\n towerPolygon.outerCoordinates = [\n { lat: 43.6427196, lng: -79.3876802, altitude: 600 },\n { lat: 43.6421742, lng: -79.3869184, altitude: 600 },\n { lat: 43.643001, lng: -79.3866475, altitude: 600 }\n ];\n towerPolygon.addEventListener('gmp-click', (event) =\\\u003e {\n towerPolygon.strokeColor = colors\\[\\~\\~(Math.random() \\* colors.length)\\];\n });\n map3DElement.append(towerPolygon);\n\n document.body.append(map3DElement);\n }\n\n init();"]]