कैमरा और दृश्य

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

iOS के लिए मैप SDK के साथ, आप मैप का कैमरा बदलकर मैप के उपयोगकर्ता का नज़रिया बदल सकते हैं.

iOS के लिए Maps SDK टूल की मदद से, उपयोगकर्ता आपके मैप को तिरछा और घुमा सकते हैं. ऐसा करके वे अपने काम के ओरिएंटेशन को अडजस्ट कर सकते हैं. किसी भी ज़ूम स्तर पर, उपयोगकर्ता मैप को पैन कर सकते हैं या बहुत कम प्रतीक्षा अवधि से उसका नज़रिया बदल सकते हैं.

कैमरे में किए गए बदलाव से आपके जोड़े हुए मार्कर, पॉलीलाइन या अन्य ग्राफ़िक नहीं बदलते. हालांकि, हो सकता है कि नए व्यू के साथ बेहतर बनाने के लिए आप इन बदलावों को बदलना चाहें.

मैप का व्यू

iOS के लिए Maps SDK टूल, आपके डिवाइस की स्क्रीन पर मौजूद प्लैटफ़ॉर्म (गोलाकार) को दिखाने के लिए, मीटरेटर प्रोजेक्शन का इस्तेमाल करता है.

कैमरे की स्थिति

मैप व्यू को कैमरा के तौर पर मॉडल किया जाता है, जो सपाट मैदान में नीचे की ओर दिखता है. कैमरे की स्थिति (और इसलिए मैप की रेंडरिंग) नीचे दी गई प्रॉपर्टी से तय की गई है: टारगेट (अक्षांश/देशांतर की जगह),ध्यान रखें, झुकाएं, और ज़ूम करें.

कैमरे की प्रॉपर्टी का डायग्राम

टारगेट (जगह)

कैमरा टारगेट, मैप के बीच की जगह होता है. इसे अक्षांश और देशांतर निर्देशांक के तौर पर दिखाया जाता है.

अक्षांश -85 और 85 डिग्री के बीच हो सकता है. इस रेंज से ऊपर या नीचे की वैल्यू को, इस रेंज के सबसे नज़दीकी वैल्यू के साथ जोड़ दिया जाएगा. उदाहरण के लिए, 100 का अक्षांश तय करने से वैल्यू 85 पर सेट हो जाएगी. देशांतर, -180 से 180 डिग्री के बीच होता है. इस सीमा से ज़्यादा या कम की जाने वाली वैल्यू को रैप किया जाएगा, ताकि वे रेंज (-180, 180) के अंदर आ सकें. जैसे, 480, 840, और 1200 को 120 डिग्री तक रैप किया जाएगा.

बियरिंग (ओरिएंटेशन)

कैमरा बेयरिंग, कंपास की दिशा के बारे में बताता है. इसे मैप के ऊपरी किनारे से सच्ची दूरी पर मापा जाता है. अगर आप मैप के केंद्र से मैप के ऊपरी किनारे की ओर एक वर्टिकल लाइन बनाते हैं, तो बियरिंग कैमरे के हेडिंग (डिग्री में मापी गई) के मुताबिक होती है.

0 होने का मतलब है कि मैप का ऊपर वाला हिस्सा सही उत्तर की ओर है. बियरिंग वैल्यू 90 का मतलब है कि मैप पर सबसे ऊपर, पूर्व दिशा में है (कंपास पर 90 डिग्री). वैल्यू 180 का मतलब है मैप पर सबसे ऊपर, दक्षिण की ओर.

Maps API से, मैप के असर को बदला जा सकता है. उदाहरण के लिए, कार चलाने वाला कोई व्यक्ति आम तौर पर सड़क के मैप को यात्रा की दिशा में बदलने के लिए उसे मोड़ता है. हाइकिंग और मैप का इस्तेमाल करने वाले लोग आम तौर पर मैप को दिशा में इस तरह पेश करते हैं कि सीधी रेखा में उत्तर दिशा की तरफ़ जाए.

झुकाव (देखने का कोण)

झुकाव, चाप पर कैमरे की स्थिति को सीधे मैप की मध्य स्थिति पर मापता है, जिसे नादिर से डिग्री में मापा जाता है (कैमरे के ठीक नीचे दिखने वाली दिशा). 0 का मान कैमरे को सीधे नीचे की ओर संकेत करता है. 0 से ज़्यादा मान ऐसे कैमरे के अनुरूप है जिसे डिग्री की तय संख्या से क्षितिज की ओर पिच किया गया है. जब आप व्यूइंग ऐंगल में बदलाव करते हैं, तो मैप सही तरीके से दिखता है. इसमें, दूर से दिखने वाली सुविधाएं पहले से छोटी दिखती हैं और आस-पास की सुविधाएं दिखती हैं. यहां दिए गए इमेज में यह दिखाया गया है.

नीचे दी गई इमेज में, व्यू करने का ऐंगल 0 डिग्री है. पहली इमेज में इसका स्कीमा दिखाया जाता है; रैंक 1 कैमरे की स्थिति है और रैंक 2 मैप की मौजूदा स्थिति है. इसके बाद मिलने वाला मैप इसके नीचे दिखाया जाता है.

मैप का स्क्रीनशॉट, जिसमें कैमरे को 0 डिग्री देखने के ऐंगल पर रखा गया है. यह ज़ूम लेवल 18 पर सेट है.
मैप को कैमरे के डिफ़ॉल्ट व्यू ऐंगल के साथ दिखाया गया.
मैप की जगह को डिफ़ॉल्ट रूप से, 0 डिग्री के कोण पर मैप की जगह पर दिखाता है.
कैमरे का वीडियो देखने के लिए डिफ़ॉल्ट ऐंगल.

नीचे दी गई इमेज में, व्यू करने का ऐंगल 45 डिग्री है. ध्यान दें कि कैमरा सीधे ऊपर की ओर (0 डिग्री) और ज़मीन (90 डिग्री) के बीच की चाप के पास जाता है और पोज़िशन 3 होता है. कैमरा अब भी मैप के बीच के बिंदु की ओर संकेत कर रहा है, लेकिन स्थिति 4 पर लाइन से दिखाया गया क्षेत्र अब दिखाई दे रहा है.

मैप का स्क्रीनशॉट, जिसका कैमरा 45 डिग्री के ऐंगल से ज़ूम किया गया हो और उसे 18 ज़ूम करके दिखाया गया हो.
मैप को 45 डिग्री के व्यू ऐंगल के साथ दिखाया गया.
डायग्राम में दिखाया गया है कि कैमरे का व्यू ऐंगल 45 डिग्री पर सेट किया गया है, लेकिन ज़ूम लेवल अब भी 18 पर सेट है.
44 डिग्री का कैमरा व्यू ऐंगल.

इस स्क्रीनशॉट में मौजूद मैप, अब भी उसी जगह पर मौजूद है जो मूल मैप में है. हालांकि, मैप के सबसे ऊपर इसके लिए और सुविधाएं दिखाई गई हैं. जब आप 45 डिग्री से ज़्यादा के कोण को बढ़ाते हैं, तो कैमरे और मैप पर दिखाई जाने वाली जगहों के बीच की सुविधाएं आनुपातिक रूप से बड़ी दिखाई देती हैं, जबकि मैप की स्थिति से परे सुविधाएं आनुपातिक रूप से छोटी दिखाई देती हैं, जिससे तीन-डाइमेंशन वाला प्रभाव मिलता है.

तारीख की सीमा बढ़ाकर

कैमरे का ज़ूम स्तर मैप का स्केल तय करता है. ज़ूम के ज़्यादा लेवल पर, स्क्रीन पर ज़्यादा जानकारी देखी जा सकती है. वहीं, छोटे ज़ूम के लेवल पर, स्क्रीन पर दुनिया के ज़्यादातर हिस्से देखे जा सकते हैं. ज़ूम लेवल 0 पर, मैप स्केल को इस तरह से दिखाया गया है कि पूरी दुनिया में करीब 256 पॉइंट की चौड़ाई है.

ज़ूम लेवल को 1 तक बढ़ाने से, स्क्रीन पर दुनिया की चौड़ाई दोगुनी हो जाती है. इसलिए, ज़ूम लेवल N पर, दुनिया की चौड़ाई करीब 256 * 2N पॉइंट होगी. उदाहरण के लिए, ज़ूम लेवल 2 पर, पूरी दुनिया करीब 1024 पॉइंट चौड़ी है.

ज़ूम स्तर के लिए पूर्णांक नहीं होना चाहिए. मैप के ज़रिए मंज़ूर किए गए ज़ूम के लेवल की सीमा कई चीज़ों पर निर्भर करती है. इनमें टारगेट, मैप का प्रकार, और स्क्रीन का आकार शामिल हैं. इस सीमा से बाहर का कोई भी नंबर अगले सबसे करीबी मान्य मान में बदल दिया जाएगा, जो या तो कम से कम ज़ूम स्तर या अधिकतम ज़ूम स्तर हो सकता है. नीचे दी गई सूची में, जानकारी का वह अनुमानित लेवल दिखता है जो आपको ज़ूम लेवल पर दिख सकती है:

  • 1: दुनिया
  • 5: लैंडमास/महाद्वीप
  • 10: शहर
  • 15: सड़कें
  • 20: इमारतें
नीचे दी गई इमेज में अलग-अलग ज़ूम लेवल दिखते हैं:
5 में से ज़ूम लेवल पर मैप का स्क्रीनशॉट
ज़ूम लेवल 5 का मैप.
15 के ज़ूम लेवल पर मैप का स्क्रीनशॉट
ज़ूम लेवल 15 पर मैप.
ज़ूम लेवल 20 पर मैप का स्क्रीनशॉट
ज़ूम लेवल 20 पर मैप.

कैमरे की शुरुआती स्थिति सेट करें

GMSCameraPosition ऑब्जेक्ट का इस्तेमाल करके, कैमरे की शुरुआती स्थिति सेट करें. इससे, भालू, झुकाव, और ज़ूम करने की सुविधा के साथ-साथ, टारगेट का अक्षांश और देशांतर सेट किया जा सकता है.

कैमरे की शुरुआती स्थिति सेट करने के लिए, GMSCameraPosition ऑब्जेक्ट बनाएं. इसके बाद, उस ऑब्जेक्ट को GMSMapView सुविधा कंस्ट्रक्टर को पास करें.

Swift

let camera = GMSCameraPosition(
  latitude: -33.8683,
  longitude: 151.2086,
  zoom: 16
)
mapView = GMSMapView(frame: self.view.bounds, camera: camera)
      

Objective-C

GMSCameraPosition *camera = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                        longitude:151.2086
                                                             zoom:16];
mapView = [GMSMapView mapWithFrame:self.view.bounds camera:camera];
      

डिफ़ॉल्ट UIView इनिट तरीके का इस्तेमाल करके भी, GMSMapView ऑब्जेक्ट बनाया जा सकता है. इस मामले में, कैमरे की स्थिति डिफ़ॉल्ट जगह से शुरू होती है और आप निर्माण के बाद उसे बदल देती है.

Swift

mapView = GMSMapView(frame: self.view.bounds)
      

Objective-C

mapView = [[GMSMapView alloc] initWithFrame:self.view.bounds];
      

कैमरे की स्थिति बदलें

आप जगह की जानकारी, भालू, टिल्ट, और ज़ूम सेट करने के लिए, कैमरे की पोज़िशन में बदलाव कर सकते हैं. हालांकि, GMSMapView में कैमरे की जगह बदलने के लिए कई तरीके दिए गए हैं, लेकिन आम तौर पर GMSCameraPosition या GMSCameraUpdate का इस्तेमाल किया जाता है:

  • GMSCameraPosition ऐसी प्रॉपर्टी और तरीके शामिल हैं जिनका इस्तेमाल करके, कैमरे की पोज़िशन का हर पैरामीटर बदला जाता है: टारगेट, भालू, टिल्ट, और ज़ूम.

  • GMSCameraUpdate आपको टारगेट बदलने, भालू, टिल्ट करने, और ज़ूम करने की सुविधा मिलती है. साथ ही, स्क्रोल करने, बेहतर ज़ूम करने, पहले से तय सीमाओं के अंदर कैमरे को हाइलाइट करने वगैरह के लिए और भी सुविधाएं मिलती हैं.

जब आप कैमरा ले जाते हैं, तो आप कैमरे को "नई जगह" पर स्नैप करना चुन सकते हैं, इसका मतलब है कि कोई ऐनिमेशन नहीं है या मूव को ऐनिमेट करें. उदाहरण के लिए, अगर आप कैमरे के टारगेट की जगह में बदलाव को ऐनिमेट करेंगे, तो ऐनिमेशन पुरानी जगह से नई जगह पर पैन करेगा.

ऐनिमेशन में, मौजूदा कैमरे की विशेषताओं और कैमरे की नई विशेषताओं के बीच अंतर दिखाता है. कोर ऐनिमेशन का इस्तेमाल करके ऐनिमेशन की अवधि को कंट्रोल किया जा सकता है.

GMSCameraPosition का इस्तेमाल करें

GMSCameraPosition का इस्तेमाल करके कैमरा बदलने के लिए, आपको एक नया ऑब्जेक्ट बनाना होगा या किसी मौजूदा ऑब्जेक्ट को कॉपी करके, GMSMapView ऑब्जेक्ट पर सेट करना होगा. ऐनिमेशन के साथ या उसके बिना, कैमरे को नई जगह पर ले जाने के लिए, GMSCameraPosition ऑब्जेक्ट का इस्तेमाल करें.

कैमरा ऑब्जेक्ट को कॉन्फ़िगर करने के लिए, GMSCameraPosition ऑब्जेक्ट का इस्तेमाल करें. जैसे, अक्षांश, देशांतर, ज़ूम, भालू, और ऐंगल देखना. इसके बाद, उस ऑब्जेक्ट का इस्तेमाल GMSMapView की camera प्रॉपर्टी सेट करने के लिए किया जाता है.

Swift

let fancy = GMSCameraPosition(
  latitude: -33,
  longitude: 151,
  zoom: 6,
  bearing: 270,
  viewingAngle: 45
)
mapView.camera = fancy
      

Objective-C

GMSCameraPosition *fancy = [GMSCameraPosition cameraWithLatitude:-33.8683
                                                       longitude:151.2086
                                                            zoom:6
                                                         bearing:30
                                                    viewingAngle:45];
[mapView setCamera:fancy];
      

ऐसी किसी भी GMSCameraPosition प्रॉपर्टी को हटाएं जिसे आपको उसकी डिफ़ॉल्ट वैल्यू पर सेट करना है.

जगह को ऐनिमेट करने के लिए, camera प्रॉपर्टी सेट करने के बजाय animateToCameraPosition: तरीका इस्तेमाल करें.

GMSCameraUpdate का इस्तेमाल करें

GMSCameraUpdate आपको कैमरे की स्थिति अपडेट करने देता है और चुनने देता है कि उस नई जगह पर स्नैप करना है या ऐनिमेट करना है. GMSCameraUpdate की सुविधा. आप GMSCameraUpdate के जैसे काम करने के लिए GMSCameraPosition का इस्तेमाल कर सकते हैं. हालांकि, GMSCameraUpdate के साथ काम करने में आसानी होती है और कैमरे की मदद से, उसमें बदलाव भी किया जा सकता है.

उदाहरण के लिए, मौजूदा ज़ूम लेवल को बढ़ाने के लिए GMSCameraPosition का इस्तेमाल करने के लिए, आपको पहले मौजूदा ज़ूम लेवल तय करना होगा, फिर GMSCameraPosition ऑब्जेक्ट बनाना होगा, जहां आप ज़ूम को मौजूदा ज़ूम से ज़्यादा वाली वैल्यू पर सेट करना चाहते हैं.

इसके अलावा, zoomIn: ऑब्जेक्ट का इस्तेमाल करके, एक GMSCameraUpdate ऑब्जेक्ट बनाया जा सकता है. इसके बाद, GMSCameraUpdate ऑब्जेक्ट को GMSMapView animateWithCameraUpdate: वाले तरीके से पास करके, कैमरा अपडेट करें.

Swift

// Zoom in one zoom level
let zoomCamera = GMSCameraUpdate.zoomIn()
mapView.animate(with: zoomCamera)
      

Objective-C

// Zoom in one zoom level
GMSCameraUpdate *zoomCamera = [GMSCameraUpdate zoomIn];
[mapView animateWithCameraUpdate:zoomCamera];
      

कैमरे को नई जगह पर ले जाने के लिए, GMSMapView moveCamera: तरीके का इस्तेमाल करें.

अगले उदाहरण में, कैमरे को एक जगह से दूसरी जगह ले जाने के लिए GMSCameraUpdate का इस्तेमाल किया जाता है.

Swift

// Center the camera on Vancouver, Canada
let vancouver = CLLocationCoordinate2D(latitude: 49.26, longitude: -123.11)
let vancouverCam = GMSCameraUpdate.setTarget(vancouver)
mapView.animate(with: vancouverCam)
      

Objective-C

// Center the camera on Vancouver, Canada
CLLocationCoordinate2D vancouver = CLLocationCoordinate2DMake(49.26, -123.11);
GMSCameraUpdate *vancouverCam = [GMSCameraUpdate setTarget:vancouver];
[mapView animateWithCameraUpdate:vancouverCam];
      

GMSCameraUpdate ऑब्जेक्ट बनाएं

GMSCameraUpdate ऑब्जेक्ट को बनाने के किसी एक तरीके का इस्तेमाल करके उसे बनाएं.

zoomIn: और zoomOut:
दूसरी सभी प्रॉपर्टी पर कोई बदलाव न करते हुए, मौजूदा ज़ूम लेवल को 1.0 तक बदलें.
zoomTo:
अन्य सभी प्रॉपर्टी को एक ही रखते हुए, ज़ूम लेवल को दी गई वैल्यू में बदलता है.
zoomBy:
दिए गए मान से ज़ूम का स्तर बढ़ाता या घटाता है (अगर मान ऋणात्मक है).
zoomBy:atPoint:
स्क्रीन पर बताए गए पॉइंट की स्थिति को बनाए रखते हुए, दिए गए मान के हिसाब से ज़ूम के लेवल को बढ़ाता (या कम करता है).
setTarget:
बाकी सभी प्रॉपर्टी को सुरक्षित रखते हुए, कैमरे का अक्षांश और देशांतर बदलता है.
setTarget:zoom:
बाकी सभी प्रॉपर्टी को सुरक्षित रखते हुए, कैमरे का अक्षांश, देशांतर, और ज़ूम बदलता है.
setCamera:
नया GMSCameraPosition सेट करता है.
scrollByX:Y:
मैप को तय संख्या से बदलने के लिए, कैमरे का अक्षांश और देशांतर बदलता है. सकारात्मक x मान होने पर कैमरा दाईं ओर चला जाता है, ताकि ऐसा लगता है कि मैप बाईं ओर चला गया है. पॉज़िटिव y वैल्यू की वजह से, कैमरा मूव हो जाता है, ताकि ऐसा लगे कि मैप ऊपर की ओर चला गया है. स्क्रोलिंग, कैमरे की मौजूदा असर से जुड़ी है. उदाहरण के लिए, अगर कैमरे की असर 90 डिग्री है, तो पूर्व दिशा में "ऊपर" हो सकता है.
fitBounds:
कैमरे को स्क्रीन पर तय की गई सीमाओं में लाने के लिए, ज़ूम को बेहतरीन तरीके से बदलता है. 64 पॉइंट की सीमा पर डिफ़ॉल्ट पैडिंग लागू करता है.
fitBounds:withPadding:
कैमरे को तय सीमा के सबसे बड़े ज़ूम लेवल पर, सेंटर में बदलता है. बाउंडिंग बॉक्स के सभी साइड के लिए पॉइंट में एक ही पैडिंग तय करने के लिए, इस तरीके का इस्तेमाल करें.
fitBounds:withEdgeInsets:
कैमरे को तय सीमा के सबसे बड़े ज़ूम लेवल पर, सेंटर में बदलता है. UIEdgeInsets की मदद से, आप बाउंडिंग बॉक्स की हर साइड के लिए अलग-अलग पैडिंग (जगह) तय करते हैं.