एक मैप कॉन्फ़िगर करें

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

इस विषय में, 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);

      

नीचे दी गई इमेज में सामान्य, हाइब्रिड, और इलाके वाले मैप की तुलना की गई है:

MapType की तुलना

3D बिल्डिंग सेट अप करें

कई शहरों को क्लोज़-अप में देखने पर, आपके शहर की 3D इमारतें दिखेंगी, जिन्हें देखा जा सकता है नीचे दी गई तस्वीर में नज़र आ रहे हैं. GoogleMap.setBuildingsEnabled(false) को बोलकर, 3D बिल्डिंग की सुविधा बंद की जा सकती है.

वैंकूवर, कनाडा का एक मैप

इनडोर मैप की सेटिंग सेट अप करना

उच्च ज़ूम स्तर पर, मैप हवाई अड्डे, शॉपिंग मॉल, बड़े रीटेल स्टोर, और बस, मेट्रो वगैरह जैसी इनडोर जगहें स्टेशन. इन फ़्लोर प्लान को इनडोर मैप कहा जाता है, जिन्हें 'सामान्य' स्थिति के लिए दिखाया जाता है और 'सैटलाइट' मैप टाइप (GoogleMap.MAP_TYPE_NORMAL और GoogleMap.MAP_TYPE_SATELLITE). वे अपने-आप चालू हो जाते हैं, जब उपयोगकर्ता ज़ूम इन हो जाता है, और मैप ज़ूम आउट होने पर वे गायब हो जाते हैं.

अब काम नहीं करने वाला मैप: आने वाले समय में रिलीज़ होने वाले वर्शन में, इनडोर मैप सिर्फ़ normal मैप टाइप पर उपलब्ध होंगे. इससे आने वाले समय में, satellite पर इनडोर मैप काम नहीं करेंगे. terrain या hybrid मैप. इनडोर मोड काम न करने पर भी, isIndoorEnabled() वही वैल्यू दिखाता रहेगा जो setIndoorEnabled() की मदद से सेट की गई है. डिफ़ॉल्ट रूप से, setIndoorEnabled की वैल्यू true होती है. रिलीज़ नोट से आपको पता चलेगा कि इनडोर सपोर्ट, इन मैप टाइप पर कब उपलब्ध नहीं होगा.

इनडोर मैप का उदाहरण

यहां एपीआई में इनडोर मैप की सुविधा के बारे में खास जानकारी दी गई है:

  • GoogleMap.setIndoorEnabled(false) बोलकर, इनडोर मैप की सुविधा बंद की जा सकती है. डिफ़ॉल्ट रूप से, इनडोर मैप चालू होते हैं. इनडोर मैप, एक बार में एक मैप पर दिखाए जाते हैं. डिफ़ॉल्ट रूप से यह आपके ऐप्लिकेशन में जोड़ा जाने वाला पहला मैप होता है. यहां की यात्रा पर हूं किसी दूसरे मैप पर इनडोर मैप दिखाएं, उन्हें पहले मैप पर बंद करें, फिर दूसरे मैप पर setIndoorEnabled(true) को कॉल करें.
  • डिफ़ॉल्ट लेवल पिकर (फ़्लोर पिकर) को बंद करने के लिए, GoogleMap.getUiSettings().setIndoorLevelPickerEnabled(false) को कॉल करें. ज़्यादा जानकारी के लिए, मैप के साथ इंटरैक्ट करना लेख पढ़ें.
  • 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);

बैकग्राउंड का रंग कॉन्फ़िगर करना

गहरे रंग वाले मोड में काम करते समय या मैप व्यू के बीच स्विच करते समय, इन कामों के लिए मैप के डिफ़ॉल्ट बैकग्राउंड कलर को कॉन्फ़िगर करें. ऐसा करने के लिए, मैप के विकल्प backgroundColor प्रॉपर्टी को सेट करें.

Kotlin

private val googleMapOptions: GoogleMapOptions =
    GoogleMapOptions().backgroundColor(Color.argb(255, 255, 0, 0));

Java

private GoogleMapOptions options = new GoogleMapOptions().backgroundColor(Color.argb(255, 255, 0, 0));

क्लाउड-आधारित मैप स्टाइलिंग का इस्तेमाल करके, बैकग्राउंड का रंग. बैकग्राउंड का रंग, जो इसमें सेट किया गया है मैप स्टाइलिंग को स्थानीय मैप से ज़्यादा प्राथमिकता दी जाती है बैकग्राउंड का रंग. ज़्यादा जानकारी के लिए, ऐप्लिकेशन का बैकग्राउंड बदलना देखें इसके लिए color क्लाउड-आधारित मैप स्टाइलिंग.