झुकाएं और घुमाएं

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

सैंपल देखें

खास जानकारी

मैप शुरू करते समय, heading और tilt प्रॉपर्टी को शामिल करके और मैप पर setTilt और setHeading तरीकों को कॉल करके, वेक्टर मैप पर हेडिंग झुकाने और घुमाने (हेडिंग) की सुविधा सेट की जा सकती है. इस उदाहरण में, मैप में कुछ बटन जोड़े गए हैं. ये बटन 20 डिग्री के हिसाब से, प्रोग्राम के हिसाब से झुकाने की सुविधा और हेडिंग को अपने-आप अडजस्ट करते हुए दिखाते हैं.

TypeScript

function initMap(): void {
  const map = new google.maps.Map(
    document.getElementById("map") as HTMLElement,
    {
      center: {
        lat: 37.7893719,
        lng: -122.3942,
      },
      zoom: 16,
      heading: 320,
      tilt: 47.5,
      mapId: "90f87356969d889c",
    }
  );

  const buttons: [string, string, number, google.maps.ControlPosition][] = [
    ["Rotate Left", "rotate", 20, google.maps.ControlPosition.LEFT_CENTER],
    ["Rotate Right", "rotate", -20, google.maps.ControlPosition.RIGHT_CENTER],
    ["Tilt Down", "tilt", 20, google.maps.ControlPosition.TOP_CENTER],
    ["Tilt Up", "tilt", -20, google.maps.ControlPosition.BOTTOM_CENTER],
  ];

  buttons.forEach(([text, mode, amount, position]) => {
    const controlDiv = document.createElement("div");
    const controlUI = document.createElement("button");

    controlUI.classList.add("ui-button");
    controlUI.innerText = `${text}`;
    controlUI.addEventListener("click", () => {
      adjustMap(mode, amount);
    });
    controlDiv.appendChild(controlUI);
    map.controls[position].push(controlDiv);
  });

  const adjustMap = function (mode: string, amount: number) {
    switch (mode) {
      case "tilt":
        map.setTilt(map.getTilt()! + amount);
        break;
      case "rotate":
        map.setHeading(map.getHeading()! + amount);
        break;
      default:
        break;
    }
  };
}

declare global {
  interface Window {
    initMap: () => void;
  }
}
window.initMap = initMap;

JavaScript

function initMap() {
  const map = new google.maps.Map(document.getElementById("map"), {
    center: {
      lat: 37.7893719,
      lng: -122.3942,
    },
    zoom: 16,
    heading: 320,
    tilt: 47.5,
    mapId: "90f87356969d889c",
  });
  const buttons = [
    ["Rotate Left", "rotate", 20, google.maps.ControlPosition.LEFT_CENTER],
    ["Rotate Right", "rotate", -20, google.maps.ControlPosition.RIGHT_CENTER],
    ["Tilt Down", "tilt", 20, google.maps.ControlPosition.TOP_CENTER],
    ["Tilt Up", "tilt", -20, google.maps.ControlPosition.BOTTOM_CENTER],
  ];

  buttons.forEach(([text, mode, amount, position]) => {
    const controlDiv = document.createElement("div");
    const controlUI = document.createElement("button");

    controlUI.classList.add("ui-button");
    controlUI.innerText = `${text}`;
    controlUI.addEventListener("click", () => {
      adjustMap(mode, amount);
    });
    controlDiv.appendChild(controlUI);
    map.controls[position].push(controlDiv);
  });

  const adjustMap = function (mode, amount) {
    switch (mode) {
      case "tilt":
        map.setTilt(map.getTilt() + amount);
        break;
      case "rotate":
        map.setHeading(map.getHeading() + amount);
        break;
      default:
        break;
    }
  };
}

window.initMap = initMap;

सीएसएस

/* 
 * Always set the map height explicitly to define the size of the div element
 * that contains the map. 
 */
#map {
  height: 100%;
}

/* 
 * Optional: Makes the sample page fill the window. 
 */
html,
body {
  height: 100%;
  margin: 0;
  padding: 0;
}

.ui-button {
  background-color: #fff;
  border: 0;
  border-radius: 2px;
  box-shadow: 0 1px 4px -1px rgba(0, 0, 0, 0.3);
  margin: 10px;
  padding: 0 0.5em;
  font: 400 18px Roboto, Arial, sans-serif;
  overflow: hidden;
  height: 40px;
  cursor: pointer;
}
.ui-button:hover {
  background: rgb(235, 235, 235);
}

एचटीएमएल

<html>
  <head>
    <title>Tilt and Rotation</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>

    <link rel="stylesheet" type="text/css" href="./style.css" />
    <script type="module" src="./index.js"></script>
  </head>
  <body>
    <div id="map"></div>

    <!-- 
      The `defer` attribute causes the script to execute after the full HTML
      document has been parsed. For non-blocking uses, avoiding race conditions,
      and consistent behavior across browsers, consider loading using Promises. See
      https://developers.google.com/maps/documentation/javascript/load-maps-js-api
      for more information.
      -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=AIzaSyB41DRUbKWJHPxaFjMAwdrzWzbVKartNGg&callback=initMap&v=weekly"
      defer
    ></script>
  </body>
</html>

सैंपल आज़माएं

माउस और कीबोर्ड जेस्चर का इस्तेमाल करना

अगर उपयोगकर्ता इंटरैक्शन (हेडिंग को घुमाना) और झुकाने की सुविधाएं चालू करती हैं (जैसे कि प्रोग्राम बनाकर या Google Cloud Console में), तो वे माउस और कीबोर्ड का इस्तेमाल करके, झुकाने और घुमाने की सुविधा में बदलाव कर सकते हैं:

  • माउस का इस्तेमाल करके, shift बटन को दबाकर रखें. इसके बाद, टिल्ट को अडजस्ट करने के लिए, माउस पर क्लिक करके ऊपर और नीचे खींचें और हेडिंग को अडजस्ट करने के लिए, दाएं और बाएं खींचें.
  • कीबोर्ड का इस्तेमाल करके, shift बटन दबाकर रखें, फिर झुकाव को अडजस्ट करने के लिए अप और डाउन ऐरो बटन का इस्तेमाल करें. साथ ही, हेडिंग को अडजस्ट करने के लिए राइट और लेफ़्ट ऐरो का इस्तेमाल करें.

प्रोग्राम की मदद से झुकाव और हेडिंग को अडजस्ट करना

वेक्टर मैप पर, झुकाव और हेडिंग को प्रोग्राम के हिसाब से अडजस्ट करने के लिए, setTilt() और setHeading() तरीकों का इस्तेमाल करें. हेडिंग वह दिशा है जिसमें कैमरे उत्तर की दिशा में घड़ी की सुई की दिशा में है और map.setHeading(90) मैप को घुमाएगा, ताकि पूर्व दिशा ऊपर की ओर रहे. झुकाव का कोण सबसे ऊपर की ओर से मापा जाता है. इसलिए, map.setTilt(0) सीधे नीचे की ओर देख रहा है, जबकि map.setTilt(45) तिरछा व्यू देगा.

  • मैप का झुकाव कोण सेट करने के लिए setTilt() पर कॉल करें. झुकाव की मौजूदा वैल्यू पाने के लिए, getTilt() का इस्तेमाल करें.
  • मैप का शीर्षक सेट करने के लिए setHeading() पर कॉल करें. हेडिंग की मौजूदा वैल्यू पाने के लिए, getHeading() का इस्तेमाल करें.

झुकाव और शीर्षक को बनाए रखते हुए मैप सेंटर को बदलने के लिए, map.setCenter() या map.panBy() का इस्तेमाल करें.

ध्यान दें कि इस्तेमाल किए जा सकने वाले ऐंगल की रेंज, मौजूदा ज़ूम लेवल के हिसाब से अलग-अलग होती है. इस रेंज से बाहर की वैल्यू को, मौजूदा समय में तय की गई सीमा में ही शामिल किया जाएगा.

हेडिंग, टिल्ट, सेंटर, और ज़ूम को प्रोग्राम के हिसाब से बदलने के लिए, moveCamera तरीके का इस्तेमाल भी किया जा सकता है. ज़्यादा जानें.

अन्य तरीकों पर असर

मैप पर झुकाने या घुमाने की सुविधा लागू होने पर, Maps JavaScript API के अन्य तरीकों के काम करने के तरीके पर असर पड़ता है:

  • map.getBounds() हमेशा सबसे छोटा बाउंडिंग बॉक्स दिखाता है, जिसमें दिखने वाला क्षेत्र शामिल होता है. जब झुकाव लागू किया जाता है, तो नतीजे के तौर पर दिखाई गई बाउंड, मैप के व्यूपोर्ट के दिखने वाले क्षेत्र से बड़े क्षेत्र को दिखा सकती हैं.
  • map.fitBounds(), सीमाओं में फ़िट करने से पहले झुकाव और हेडिंग को शून्य पर रीसेट करेगा.
  • बाउंड को पैन करने से पहले, map.panToBounds() झुकाव और हेडिंग को रीसेट करके शून्य पर सेट कर देगा.
  • map.setTilt() कोई भी वैल्यू स्वीकार करता है, लेकिन मैप के मौजूदा ज़ूम लेवल के आधार पर ज़्यादा से ज़्यादा झुकाव को सीमित करता है.
  • map.setHeading() कोई भी वैल्यू स्वीकार करता है और उसे [0, 360] रेंज में फ़िट करने के लिए उसमें बदलाव करता है.