आकार और लाइन

प्लैटफ़ॉर्म चुनें: Android iOS

अपने मैप में अलग-अलग आकार जोड़े जा सकते हैं. शेप, मैप पर मौजूद एक ऑब्जेक्ट होता है. यह LatLng कोऑर्डिनेट सिस्टम से जुड़ा होता है. Maps JavaScript API में मौजूद 3D मैप की मदद से, मैप पर लाइनें और पॉलीगॉन जोड़े जा सकते हैं.

पॉलीलाइन

अपने मैप पर लाइन बनाने के लिए, पॉलीलाइन का इस्तेमाल करें. Polyline3DElement क्लास, मैप पर कनेक्ट किए गए लाइन सेगमेंट के लीनियर ओवरले को तय करती है. Polyline3DElement ऑब्जेक्ट में LatLng जगहों की जानकारी की एक कैटगरी होती है. साथ ही, यह लाइन सेगमेंट की एक सीरीज़ बनाता है, जो उन जगहों को क्रम से जोड़ती है.

पॉलीलाइन जोड़ना

Polyline3DElement कंस्ट्रक्टर, Polyline3DElementOptions का एक सेट लेता है. इससे लाइन के LatLng निर्देशांक और पॉलीलाइन के विज़ुअल व्यवहार को अडजस्ट करने के लिए, स्टाइल का एक सेट तय किया जाता है.

पॉलीलाइन ऑब्जेक्ट, मैप पर सीधी लाइनों की सीरीज़ के तौर पर बनाए जाते हैं. लाइन बनाते समय, Polyline3DElementOptions में लाइन के स्ट्रोक के लिए, पसंद के हिसाब से रंग, चौड़ाई, ओपैसिटी, ऊंचाई, और ज्यामितीय स्टाइल के विकल्प तय किए जा सकते हैं. इसके अलावा, लाइन बनाने के बाद भी इन प्रॉपर्टी में बदलाव किया जा सकता है. पॉलीलाइन के लिए, स्ट्रोक की ये स्टाइल इस्तेमाल की जा सकती हैं:

  • outerColor: "#FFFFFF" फ़ॉर्मैट में हेक्साडेसिमल एचटीएमएल कलर.
  • outerWidth: 0.0 और 1.0 के बीच की कोई संख्या वाली वैल्यू, जिसे strokeWidth के प्रतिशत के तौर पर समझा जाता है.
  • strokeColor: "#FFFFFF" फ़ॉर्मैट में हेक्साडेसिमल एचटीएमएल कलर.
  • strokeWidth: पिक्सल में लाइन की चौड़ाई.
  • geodesic: इससे पता चलता है कि पॉलीगॉन के किनारे, पृथ्वी के घुमाव के हिसाब से हैं या सीधी लाइनों के तौर पर बनाए गए हैं.
  • altitudeMode: कोऑर्डिनेट में मौजूद ऊंचाई के कॉम्पोनेंट को कैसे समझा जाता है
  • drawsOccludedSegments: एक बूलियन, जो यह बताता है कि ऑब्जेक्ट (जैसे कि बिल्डिंग) से छिपे हुए पॉलीगॉन के हिस्सों को ड्रॉ किया जाना चाहिए या नहीं.
  • extruded: यह एक बूलियन वैल्यू है, जिससे पता चलता है कि पॉलीलाइन को ज़मीन से कनेक्ट किया जाना चाहिए या नहीं.

let map;
async function init() {
    const { Map3DElement, Polyline3DElement } =
        await google.maps.importLibrary('maps3d');

    map = new Map3DElement({
        center: { lat: 37.7927, lng: -122.402, altitude: 65.93 },
        range: 3362.87,
        tilt: 64.01,
        heading: 25.0,
        mode: 'SATELLITE',
    });

    document.body.append(map);

    const polyline = new Polyline3DElement({
        path: [
            { 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 },
        ],
        strokeColor: 'blue',
        outerColor: 'white',
        strokeWidth: 10,
        outerWidth: 0.4,
        altitudeMode: 'RELATIVE_TO_GROUND', // Place it on the ground (as it has no altitude it will just be at ground height).
        drawsOccludedSegments: true, // Show the line through the buildings or anything else that might get in the way.
    });

    map.append(polyline);
}

void init();

इंटरैक्टिव पॉलीलाइन

इस उदाहरण में, क्लिक इवेंट को रजिस्टर करने के बाद, पॉलीलाइन की drawsOccludedSegments प्रॉपर्टी को टॉगल किया गया है.

let map;
async function init() {
    const { Map3DElement, Polyline3DInteractiveElement } =
        await google.maps.importLibrary('maps3d');

    map = new Map3DElement({
        center: { lat: 37.7927, lng: -122.402, altitude: 65.93 },
        range: 3362.87,
        tilt: 64.01,
        heading: 25.0,
        mode: 'SATELLITE',
    });

    document.body.append(map);

    const polyline = new Polyline3DInteractiveElement({
        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 },
        ],
        strokeColor: 'blue',
        outerColor: 'white',
        strokeWidth: 10,
        outerWidth: 0.4,
        altitudeMode: 'RELATIVE_TO_GROUND', // Place it on the ground (as it has no altitude it will just be at ground height).
        drawsOccludedSegments: true, // Show the line through the buildings or anything else that might get in the way.
    });

    polyline.addEventListener('gmp-click', function () {
        // Toggle whether the line draws occluded segments.
        this.drawsOccludedSegments = !this.drawsOccludedSegments;
    });

    map.append(polyline);
}

void init();

पॉलीगॉन

पॉलीगॉन, किसी बंद पाथ (या लूप) से घिरे इलाके को दिखाता है. इसे निर्देशांकों की एक सीरीज़ से तय किया जाता है. Polygon3DElement ऑब्जेक्ट, Polyline3DElement ऑब्जेक्ट से मिलते-जुलते होते हैं. इनमें क्रम से लगाए गए कोऑर्डिनेट की सीरीज़ होती है. पॉलीगॉन को स्ट्रोक और फ़िल के साथ बनाया जाता है. पॉलीगॉन के किनारे (स्ट्रोक) के लिए, पसंद के हिसाब से रंग और चौड़ाई तय की जा सकती है. साथ ही, बंद हिस्से (फ़िल) के लिए, पसंद के हिसाब से रंग और ओपैसिटी तय की जा सकती है. रंगों को हेक्साडेसिमल एचटीएमएल फ़ॉर्मैट में दिखाया जाना चाहिए. रंगों के नाम इस्तेमाल नहीं किए जा सकते.

Polygon3DElement ऑब्जेक्ट, मुश्किल आकृतियों के बारे में बता सकते हैं. इनमें ये शामिल हैं:

  • एक ही पॉलीगॉन से तय किए गए कई ऐसे इलाके जो एक-दूसरे से जुड़े नहीं हैं.
  • ऐसे इलाके जहां गड्ढे हों.
  • एक या इससे ज़्यादा इलाकों के इंटरसेक्शन.

किसी जटिल आकार को तय करने के लिए, कई पाथ वाले पॉलीगॉन का इस्तेमाल किया जाता है.

कोई पॉलीगॉन जोड़ें

पॉलीगॉन वाले इलाके में कई अलग-अलग पाथ शामिल हो सकते हैं. इसलिए, Polygon3DElement ऑब्जेक्ट की पाथ प्रॉपर्टी, कलेक्शन के कलेक्शन के बारे में बताती है. हर कलेक्शन, क्रम से लगाए गए LatLng निर्देशांकों का एक अलग क्रम तय करता है.

सिर्फ़ एक पाथ वाले बेसिक पॉलीगॉन के लिए, LatLng निर्देशांकों के एक कलेक्शन का इस्तेमाल करके, Polygon3DElement बनाया जा सकता है. Maps JavaScript API में मौजूद 3D Maps, अरे को अरे के अरे में बदल देगा. ऐसा तब होगा, जब इसे path प्रॉपर्टी में सेव किया जाएगा.

async function init() {
    const { Map3DElement, Polygon3DElement } =
        await google.maps.importLibrary('maps3d');

    const map3DElement = new Map3DElement({
        center: { lat: 40.6842, lng: -74.0019, altitude: 1000 },
        heading: 340,
        tilt: 70,
        mode: 'HYBRID',
    });

    const polygonOptions = {
        strokeColor: '#0000ff80',
        strokeWidth: 8,
        fillColor: '#ff000080',
        drawsOccludedSegments: false,
    };

    const examplePolygon = new Polygon3DElement(polygonOptions);

    examplePolygon.path = [
        { lat: 40.7144, lng: -74.0208 },
        { lat: 40.6993, lng: -74.019 },
        { lat: 40.7035, lng: -74.0004 },
    ];

    map3DElement.append(examplePolygon);

    document.body.append(map3DElement);
}

void init();

इंटरैक्टिव पॉलीगॉन

यहां दिए गए उदाहरण में, क्लिक इवेंट को रजिस्टर करने के बाद, पॉलीगॉन के अंदर और बाहर के रंगों को बदला गया है.

async function init() {
    const { Map3DElement, Polygon3DInteractiveElement } =
        await google.maps.importLibrary('maps3d');

    const map = new Map3DElement({
        center: { lat: 40.6842, lng: -74.0019, altitude: 1000 },
        heading: 340,
        tilt: 70,
        mode: 'HYBRID',
    });

    document.body.append(map);

    const polygonOptions = {
        strokeColor: '#0000ff80',
        strokeWidth: 8,
        fillColor: '#ff000080',
        drawsOccludedSegments: false,
    };

    const examplePolygon = new Polygon3DInteractiveElement(polygonOptions);

    examplePolygon.path = [
        { lat: 40.7144, lng: -74.0208 },
        { lat: 40.6993, lng: -74.019 },
        { lat: 40.7035, lng: -74.0004 },
        { lat: 40.7144, lng: -74.0208 },
    ];

    examplePolygon.addEventListener('gmp-click', function (event) {
        // change the color of the polygon stroke and fill colors to a random alternatives!
        this.fillColor = randomizeHexColor(this.fillColor);
        this.strokeColor = randomizeHexColor(this.strokeColor);
        console.log(event);
    });

    map.append(examplePolygon);
}

function randomizeHexColor(originalHexColor) {
    console.log(originalHexColor);
    const alpha = originalHexColor.substring(7);

    // Generate random values for Red, Green, Blue (0-255)
    const r = Math.floor(Math.random() * 256);
    const g = Math.floor(Math.random() * 256);
    const b = Math.floor(Math.random() * 256);

    console.log(r + ' ' + g + ' ' + b);

    // Convert decimal to 2-digit hex, padding with '0' if needed
    const rHex = ('0' + r.toString(16)).slice(-2);
    const gHex = ('0' + g.toString(16)).slice(-2);
    const bHex = ('0' + b.toString(16)).slice(-2);

    // Combine parts: '#' + random RGB + original Alpha (if any)
    return `#${rHex}${gHex}${bHex}${alpha}`;
}

void init();