इस विषय में, Android ऐप्लिकेशन में जोड़े गए मैप को कॉन्फ़िगर करने का तरीका बताया गया है Android के लिए Maps SDK का इस्तेमाल करके.
खास जानकारी
अपने ऐप्लिकेशन में मैप जोड़ने के बाद, शुरुआती और रनटाइम को कॉन्फ़िगर किया जा सकता है
मैप की सेटिंग. शुरुआती सेटिंग इस आधार पर कॉन्फ़िगर की जानी चाहिए कि क्या
आपने मैप कंटेनर जोड़ा है (SupportMapFragment
या
MapView
) स्टैटिक या डाइनैमिक तौर पर. अगर मैप कंटेनर को स्टैटिक तौर पर जोड़ा गया था, तो लेआउट फ़ाइल में मैप की शुरुआती सेटिंग कॉन्फ़िगर की जा सकती हैं.
अगर इसे डायनैमिक तौर पर जोड़ा गया था, तो आप इसमें शुरुआती सेटिंग को कॉन्फ़िगर कर सकते हैं:
GoogleMapOptions
के साथ OnCreate
कॉलबैक
ऑब्जेक्ट है.
मैप कंटेनर जोड़ने के बारे में जानकारी पाने के लिए, मैप जोड़ें लेख पढ़ें.
मैप की शुरुआती सेटिंग में ये शामिल हैं:
- कैमरे की पोज़िशन, जिसमें ये शामिल हैं: जगह, ज़ूम, दिशा, और झुकाव. कैमरे की पोज़िशनिंग के बारे में जानने के लिए, कैमरा और व्यू देखें.
- मैप का टाइप.
- ज़ूम बटन और कंपास जैसे यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट दिखाने के लिए.
- चालू करने के लिए हाथ के जेस्चर.
- लाइट मोड चालू है या नहीं.
रनटाइम पर, इन सेटिंग और अतिरिक्त सेटिंग को कॉन्फ़िगर किया जा सकता है
onMapReady
में GoogleMap
ऑब्जेक्ट को अपडेट किया जा रहा है
कॉलबैक. अतिरिक्त सेटिंग कॉन्फ़िगर करने के लिए,
GoogleMap
क्लास का इस्तेमाल करता है, जैसे कि वह क्लास जो
ट्रैफ़िक लेयर और मैप पैडिंग के साथ.
उदाहरण
नीचे दिए गए उदाहरण कोड और ऊपर दिए गए स्क्रीनशॉट में, मैप को इन सेटिंग की मदद से कॉन्फ़िगर किया गया है.
शुरुआती सेटिंग, लेआउट फ़ाइल में कॉन्फ़िगर की जाती हैं:
- ज़ूम कंट्रोल चालू करें.
- हाथ के जेस्चर से जुड़े कंट्रोल को घुमाने की सुविधा चालू करें.
- मैप को 30 डिग्री तक झुकाएं.
रनटाइम सेटिंग:
- कैमरे को क्योटो जापान के सामने लाएं.
- हाइब्रिड मैप टाइप चालू करें.
- ट्रैफ़िक परत चालू करें.
शुरुआती सेटिंग
<?xml version="1.0" encoding="utf-8"?> <fragment xmlns:android="http://schemas.android.com/apk/res/android" xmlns:map="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:name="com.google.android.gms.maps.SupportMapFragment" android:id="@+id/map" android:layout_width="match_parent" android:layout_height="match_parent" map:uiZoomControls="true" map:uiRotateGestures="true" map:cameraTilt="30" />
रनटाइम सेटिंग
package com.example.mapsetup; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.OnMapReadyCallback; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import com.google.android.gms.maps.model.MarkerOptions; public class MainActivity extends AppCompatActivity implements OnMapReadyCallback { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() .findFragmentById(R.id.map); mapFragment.getMapAsync(this); } // Update the map configuration at runtime. @Override public void onMapReady(GoogleMap googleMap) { // Set the map coordinates to Kyoto Japan. LatLng kyoto = new LatLng(35.00116, 135.7681); // Set the map type to Hybrid. googleMap.setMapType(GoogleMap.MAP_TYPE_HYBRID); // Add a marker on the map coordinates. googleMap.addMarker(new MarkerOptions() .position(kyoto) .title("Kyoto")); // Move the camera to the map coordinates and zoom in closer. googleMap.moveCamera(CameraUpdateFactory.newLatLng(kyoto)); googleMap.moveCamera(CameraUpdateFactory.zoomTo(15)); // Display traffic. googleMap.setTrafficEnabled(true); } }
शुरू करने से पहले
शुरू करने से पहले, इन विकल्पों की मदद से कोई प्रोजेक्ट सेट अप करें और एक बुनियादी मैप जोड़ें:
Android Studio के लिए Maps टेंप्लेट का इस्तेमाल करके ऐप्लिकेशन बनाएं. Maps टेंप्लेट आपके प्रोजेक्ट को अपने-आप कॉन्फ़िगर करता है और बेसिक मैप जोड़ता है. फ़्रैगमेंट का इस्तेमाल किया गया है को मैप कंटेनर के रूप में सेव करता है और इसे स्टैटिक तरीके से जोड़ा जाता है. ज़्यादा जानकारी के लिए, शुरुआती जानकारी देखें.
SDK टूल के लिए, मैन्युअल तरीके से अपना प्रोजेक्ट कॉन्फ़िगर करें और बुनियादी मैप जोड़ें. इसकी मदद से, किसी भी Android टेंप्लेट का इस्तेमाल किया जा सकता है. साथ ही, किसी मौजूदा ऐप्लिकेशन में मैप जोड़ा जा सकता है.
मैप को स्टैटिक रूप से जोड़ने के बाद, उसे कॉन्फ़िगर करें
इस सेक्शन में बताया गया है कि अगर आपने मैप को जोड़ा है, तो इसकी शुरुआती स्थिति कैसे सेट करें स्टैटिक रूप से आपकी लेआउट फ़ाइल में.
Android के लिए Maps SDK टूल की मदद से, कस्टम एक्सएमएल एट्रिब्यूट का सेट
SupportMapFragment
या MapView
, जिसका इस्तेमाल शुरुआती कॉन्फ़िगरेशन को कॉन्फ़िगर करने के लिए किया जा सकता है
सीधे लेआउट फ़ाइल से मैप की स्थिति. फ़िलहाल, इन एट्रिब्यूट के बारे में बताया गया है:
mapType
— दिखाए जाने वाले मैप का टाइप. मान्य वैल्यू में ये शामिल हैं:none
,normal
,hybrid
,satellite
, औरterrain
.cameraTargetLat
,cameraTargetLng
,cameraZoom
,cameraBearing
,cameraTilt
— कैमरे की शुरुआती पोज़िशन. ज़्यादा जानकारी के लिए, ज़्यादा जानकारी के लिए, कैमरा और व्यू की गाइड देखें.uiZoomControls
,uiCompass
— इससे यह तय होता है कि ज़ूम कंट्रोल और कंपास दिखेंगे या नहीं. ज़्यादा जानकारी के लिए,UiSettings
पर जाएं.uiZoomGestures
,uiScrollGestures
,uiRotateGestures
,uiTiltGestures
— बताता है कि खास हाथ के जेस्चर चालू हैं या नहीं. यहां जाएं: ज़्यादा जानकारी के लिए,UiSettings
.zOrderOnTop
— यह बताता है कि मैप व्यू की सतह दिखाई जाती है या नहीं मैप विंडो, मैप कंट्रोल, और विंडो में किसी भी ऑब्जेक्ट को ऊपर की ओर ले जाया जा सकता है. यहां जाएं: ज़्यादा जानकारी के लिए, SurfaceView.setZOrderOnTop(boolean) को देखें.useViewLifecycle
— सिर्फ़SupportMapFragment
ऑब्जेक्ट के साथ मान्य है. तय करता है मैप का लाइफ़साइकल, फ़्रैगमेंट के व्यू से जुड़ा होना चाहिए या फ़्रैगमेंट. जानकारी के लिए यहां देखें.liteMode
— लाइट मोड चालू करने के लिएtrue
; अगर ऐसा नहीं है, तोfalse
.mapColorScheme
— सामान्य और इलाके वाले मैप की कलर स्कीम बताता है. मानों मेंlight
(डिफ़ॉल्ट),dark
, औरfollow_system
शामिल हैं, जिसका मतलब है कि मौजूदा सिस्टम सेटिंग, जोUI_NIGHT_MODE_MASK
की डिवाइस सेटिंग पर आधारित है. ज़्यादा जानकारी के लिए, मैप कलर स्कीम देखें.
अपनी लेआउट फ़ाइल में इन कस्टम एट्रिब्यूट का इस्तेमाल करने के लिए, यह ज़रूरी है
नीचे दिया गया नेमस्पेस का एलान शामिल करें. आप कोई भी नेमस्पेस चुन सकते हैं,
map
होना ज़रूरी नहीं है:
xmlns:map="http://schemas.android.com/apk/res-auto"
इसके बाद, अपनी लेआउट फ़ाइल में map:
प्रीफ़िक्स वाले एट्रिब्यूट जोड़े जा सकते हैं.
यह लेआउट फ़ाइल, SupportMapFragment
ऑब्जेक्ट को कस्टम
मैप एट्रिब्यूट. MapView
ऑब्जेक्ट पर, ये एट्रिब्यूट इस तरह लागू किए जा सकते हैं
करते हैं.
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
map:cameraBearing="112.5"
map:cameraTargetLat="-33.796923"
map:cameraTargetLng="150.922433"
map:cameraTilt="30"
map:cameraZoom="13"
map:mapType="normal"
map:mapColorScheme="dark"
map:uiCompass="false"
map:uiRotateGestures="true"
map:uiScrollGestures="false"
map:uiTiltGestures="true"
map:uiZoomControls="false"
map:uiZoomGestures="true"/>
मैप को डाइनैमिक तौर पर जोड़ने के बाद उसे कॉन्फ़िगर करें
इस सेक्शन में बताया गया है कि अगर आपने मैप को जोड़ा है, तो इसकी शुरुआती स्थिति कैसे सेट करें को डाइनैमिक तौर पर अपडेट करता है.
अगर आपने डाइनैमिक तौर पर SupportMapFragment
या MapView
जोड़ा है, तो GoogleMapOptions
ऑब्जेक्ट में मैप की शुरुआती स्थिति सेट की जा सकती है. कॉन्टेंट बनाने
वही विकल्प उपलब्ध हैं जो लेआउट फ़ाइल में उपलब्ध हैं.
GoogleMapOptions
को इस तरह बनाया जा सकता है:
Kotlin
val options = GoogleMapOptions()
Java
GoogleMapOptions options = new GoogleMapOptions();
और फिर उसे इस तरह से कॉन्फ़िगर करें:
Kotlin
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false)
Java
options.mapType(GoogleMap.MAP_TYPE_SATELLITE) .compassEnabled(false) .rotateGesturesEnabled(false) .tiltGesturesEnabled(false);
मैप बनाते समय इन विकल्पों को लागू करने के लिए, इनमें से कोई एक काम करें:
- अगर आप
SupportMapFragment
का इस्तेमाल कर रहे हैं, तोSupportMapFragment.newInstance(GoogleMapOptions options)
फ़्रैगमेंट बनाने और उसे अपनी सेटिंग में पास करने के लिए, स्टैटिक फ़ैक्ट्री मेथड का इस्तेमाल करें. - अगर आप
MapView
का इस्तेमाल कर रहे हैं, तोMapView(Context, GoogleMapOptions)
कंस्ट्रक्टर और इसे अपनी सेटिंग में पास करें.
अपने मैप को स्थानीय भाषा में उपलब्ध कराना
जब ऐप्लिकेशन में MapView
या SupportMapFragment
जोड़ा जाता है, तब टेक्स्ट वाले एलिमेंट
उपयोगकर्ता के डिवाइस के आधार पर सही भाषा में दिखाए जाते हैं
सेटिंग और जगह की जानकारी. आपका ऐप्लिकेशन जिन भाषाओं का इस्तेमाल करता है उन्हें
अपने Gradle में resConfigs
आइटम जोड़कर, इस्तेमाल की जा सकने वाली सभी भाषाओं का सबसेट
फ़ाइल से लिए जाते हैं. यह इस्तेमाल न की गई भाषाओं को हटाने में मदद करता है. साथ ही, इससे आपके
ऐप्लिकेशन का बाइनरी साइज़. उदाहरण के लिए:
defaultConfig {
resConfigs "en", "fr", "es", "zh", "de", "ja", "ru", "ko", "pt", "in"
}
Android ऐप्लिकेशन के कॉन्टेंट को स्थानीय भाषा के हिसाब से लिखने के बारे में ज़्यादा जानें.
ट्रैफ़िक लेयर सेट अप करना
ट्रैफ़िक लेयर को चालू करके, अपने मैप पर ट्रैफ़िक का डेटा दिखाया जा सकता है. आप
इसे कॉल करके ट्रैफ़िक लेयर को चालू और बंद करें
setTrafficEnabled()
विधि का उपयोग करके यह पता लगाया जा सकता है कि ट्रैफ़िक लेयर वर्तमान में
कॉल करो
isTrafficEnabled()
तरीका. यहां दिए गए स्क्रीनशॉट में, ट्रैफ़िक लेयर चालू होने पर दिखने वाला मैप दिखाया गया है.
मैप का टाइप सेट करना
मैप टाइप सेट करने के लिए, setMapType
तरीके को कॉल करें.
उदाहरण के लिए, सैटलाइट मैप दिखाने के लिए:
Kotlin
// Sets the map type to be "hybrid" map.mapType = GoogleMap.MAP_TYPE_HYBRID
Java
// Sets the map type to be "hybrid" map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
नीचे दी गई इमेज में सामान्य, हाइब्रिड, और इलाके वाले मैप की तुलना की गई है:
3D बिल्डिंग सेट अप करना
कई शहरों को क्लोज़-अप में देखने पर, आपके शहर की 3D इमारतें दिखेंगी, जिन्हें देखा जा सकता है
नीचे दी गई तस्वीर में नज़र आ रहे हैं. 3d बिल्डिंग को बंद किया जा सकता है
कॉल किया जा रहा है
GoogleMap.setBuildingsEnabled(false)
.
इनडोर मैप सेटिंग सेट करें
उच्च ज़ूम स्तर पर, मैप
हवाई अड्डे, शॉपिंग मॉल, बड़े रीटेल स्टोर, और बस, मेट्रो वगैरह जैसी इनडोर जगहें
स्टेशन. इन फ़्लोर प्लान को इनडोर मैप कहा जाता है, जिन्हें 'सामान्य' स्थिति के लिए दिखाया जाता है
और 'सैटलाइट' मैप टाइप (GoogleMap.MAP_TYPE_NORMAL
और
GoogleMap.MAP_TYPE_SATELLITE
). वे अपने-आप चालू हो जाते हैं, जब उपयोगकर्ता
ज़ूम इन हो जाता है, और मैप ज़ूम आउट होने पर वे गायब हो जाते हैं.
रोकने की सूचना: आने वाली रिलीज़ में, इनडोर
मैप सिर्फ़ normal
टाइप के मैप पर उपलब्ध होंगे. इससे
आने वाले समय में, satellite
पर इनडोर मैप काम नहीं करेंगे.
terrain
या hybrid
मैप. यहां तक कि अगर घर के अंदर नहीं है, तो
समर्थित नहीं, isIndoorEnabled()
मान देना जारी रखेगा
जिसे setIndoorEnabled()
के ज़रिए सेट किया गया है. यह अभी सेट है. डिफ़ॉल्ट रूप से, setIndoorEnabled
की वैल्यू true
होती है. कॉन्टेंट बनाने
रिलीज़ नोट इस्तेमाल करने से
आपको पता होगा कि इन मैप टाइप पर इनडोर सहायता की सुविधा कब उपलब्ध नहीं होगी.
यहां API में इनडोर मैप की सुविधा की खास जानकारी दी गई है:
GoogleMap.setIndoorEnabled(false)
बोलकर, इनडोर मैप की सुविधा बंद की जा सकती है. डिफ़ॉल्ट रूप से, इनडोर मैप चालू होते हैं. इनडोर मैप, एक बार में एक मैप पर दिखाए जाते हैं. डिफ़ॉल्ट रूप से यह आपके ऐप्लिकेशन में जोड़ा जाने वाला पहला मैप होता है. यहां की यात्रा पर हूं किसी दूसरे मैप पर इनडोर मैप दिखाएं, उन्हें पहले मैप पर बंद करें, फिर दूसरे मैप परsetIndoorEnabled(true)
को कॉल करें.- डिफ़ॉल्ट लेवल पिकर (फ़्लोर पिकर) को बंद करने के लिए, कॉल करें
GoogleMap.getUiSettings().setIndoorLevelPickerEnabled(false)
. ज़्यादा जानकारी के लिए, Maps के साथ इंटरैक्ट करना लेख पढ़ें. OnIndoorStateChangeListener
— ऐसे लिसनर तय करता है जो यह पता लगाते हैं कि कोई इमारत फ़ोकस में कब आती है या किसी इमारत में कोई लेवल कब चालू होता है. ज़्यादा जानकारी के लिए, मैप के साथ इंटरैक्ट करना देखें.getFocusedBuilding
— उस बिल्डिंग की जानकारी वापस हासिल करता है जिसमें मौजूद है फ़ोकस. इसके बाद, कॉल करके ऐक्टिव लेवल का पता लगाया जा सकता हैIndoorBuilding.getActiveLevelIndex()
.- आधार मैप को शैली देने से इनडोर मैप पर असर नहीं पड़ता.
मैप पैडिंग सेट अप करें
इस वीडियो में, मैप पैडिंग का उदाहरण दिया गया है.
Google मैप को इस तरह डिज़ाइन किया गया है कि वह अपने कंटेनर के हिसाब से तय किए गए पूरे इलाके की जानकारी को भर दे
एलिमेंट, आम तौर पर MapView
या SupportMapFragment
. कॉन्टेंट बनाने और उसे मैनेज करने के
मैप कैसा दिखता है और कैसे काम करता है, यह उसके कंटेनर के डाइमेंशन से तय होता है:
- कैमरे के टारगेट में, पैड किए गए हिस्से का बीच का हिस्सा दिखेगा.
- मैप कंट्रोल, मैप.
- मैप के सबसे नीचे, कानूनी जानकारी दिखती है. जैसे, कॉपीराइट स्टेटमेंट या Google का लोगो.
GoogleMap
का इस्तेमाल करके, मैप के किनारों के आस-पास पैडिंग जोड़ी जा सकती है.setPadding()
तरीका. मैप
पूरे कंटेनर को भरना जारी रखें, लेकिन टेक्स्ट और नियंत्रण स्थिति, मैप करें
और कैमरे की मूवमेंट इस तरह से काम करेंगी जैसे कि
कम जगह होती है. इससे ये बदलाव होंगे:
- एपीआई कॉल या बटन दबाने पर कैमरे की गतिविधि (उदाहरण के लिए, कंपास, मेरी जगह की जानकारी, ज़ूम बटन), पैड किए गए हिस्से से मिलते-जुलते होते हैं.
getCameraPosition
तरीका, पैड किए गए हिस्से का केंद्र दिखाता है.Projection
औरgetVisibleRegion
तरीके, पैड किए गए हिस्से को दिखाते हैं.- यूज़र इंटरफ़ेस (यूआई) कंट्रोल, बताए गए कंटेनर के किनारे से ऑफ़सेट होते हैं पिक्सल की संख्या.
इंटरफ़ेस के कुछ हिस्से को ओवरलैप करने वाले यूज़र इंटरफ़ेस (यूआई) को डिज़ाइन करते समय, पैडिंग से सहायता मिल सकती है मैप. नीचे दी गई इमेज में, मैप को ऊपर की ओर पैड किया गया है और किनारे पर हैं. दृश्य मैप नियंत्रण और कानूनी लेख मैप के साथ-साथ दिखाए जाएँगे गद्देदार क्षेत्र के किनारे, जो हरे रंग में दिखाए गए हैं, जबकि मैप पूरे कंटेनर को भरें, जिसे नीले रंग में दिखाया गया है. इस उदाहरण में, विज्ञापन के फ़्लो को कम करने के लिए, मैप नियंत्रण को धुँधला किए बिना, मैप के दाईं ओर वाले मेन्यू पर क्लिक करें.
मैप की कलर स्कीम
सामान्य और इलाके वाले मैप के लिए, मैप की कलर स्कीम सेट की जा सकती है डाइनैमिक रूप से गहरे रंग, कम रोशनी या मौजूदा सिस्टम सेटिंग का इस्तेमाल करें. उदाहरण के लिए, आप दिन के समय के हिसाब से मैप की कलर स्कीम को गहरा या हल्का कर सकते हैं या घर के अंदर या बाहर इस्तेमाल करें.
डिफ़ॉल्ट रूप से, मैप में हल्के रंग वाले मोड का इस्तेमाल होता है. सिस्टम सेटिंग की मौजूदा वैल्यू इस आधार पर तय होती है
UI_NIGHT_MODE_MASK
के लिए डिवाइस सेटिंग पर.
Kotlin
mapFragment = SupportMapFragment.newInstance(GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2))
Java
mapFragment = SupportMapFragment.newInstance(new GoogleMapOptions().mapColorScheme(MapColorScheme.DARK).mapId(mapId2));
कलर स्कीम को टॉगल करने के लिए,
GoogleMap.setMapColorScheme()
मौजूदा स्टाइल को गहरे रंग वाले मोड, हल्के रंग वाले मोड पर सेट करने या सिस्टम का पालन करने का तरीका
सेटिंग.
Kotlin
googleMap.setMapColorScheme(MapColorScheme.DARK) googleMap.setMapColorScheme(MapColorScheme.LIGHT) googleMap.setMapColorScheme(MapColorScheme.FOLLOW_SYSTEM)
Java
googleMap.setMapColorScheme(MapColorScheme.DARK); googleMap.setMapColorScheme(MapColorScheme.LIGHT); googleMap.setMapColorScheme(MapColorScheme.FOLLOW_SYSTEM);