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

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

इस विषय में, Android ऐप्लिकेशन में जोड़े गए मैप को कॉन्फ़िगर करने का तरीका बताया गया है Android के लिए Maps SDK का इस्तेमाल करके.

खास जानकारी

Kyto के मैप का स्क्रीनशॉट, जिसमें मैप सेटिंग कॉन्फ़िगर की गई हैं. अपने ऐप्लिकेशन में मैप जोड़ने के बाद, शुरुआती और रनटाइम को कॉन्फ़िगर किया जा सकता है मैप की सेटिंग. शुरुआती सेटिंग इस आधार पर कॉन्फ़िगर की जानी चाहिए कि क्या आपने मैप कंटेनर जोड़ा है (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 इमारतें दिखेंगी, जिन्हें देखा जा सकता है नीचे दी गई तस्वीर में नज़र आ रहे हैं. 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);