मैप को शैली में ढालें

इस दस्तावेज़ में, मैप के लुक और स्टाइल को पसंद के मुताबिक बनाने के साथ-साथ, डेटा दिखने के तरीके और व्यूपोर्ट के विकल्पों को कंट्रोल करने का तरीका बताया गया है. ऐसा करने के लिए, ये तरीके अपनाएं:

  • क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करना
  • मैप स्टाइल के विकल्पों को सीधे अपने कोड में सेट करना

क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करके, मैप की स्टाइल तय करना

क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करके, मैप कॉम्पोनेंट के लुक और स्टाइल को पसंद के मुताबिक बनाएं. Google Maps का इस्तेमाल करने वाले अपने किसी भी ऐप्लिकेशन के लिए, Google Cloud Console में मैप स्टाइल बनाएं और उनमें बदलाव करें. इसके लिए, आपको अपने कोड में कोई बदलाव करने की ज़रूरत नहीं है. ज़्यादा जानकारी के लिए, क्लाउड-आधारित मैप स्टाइलिंग देखें.

ConsumerMapView और ConsumerMapFragment क्लास, दोनों में क्लाउड पर मैप की स्टाइलिंग की सुविधा काम करती है. क्लाउड-आधारित मैप स्टाइलिंग का इस्तेमाल करने के लिए, पक्का करें कि चुना गया मैप रेंडरर LATEST है. नीचे दिए सेक्शन में, अपने प्रोजेक्ट के साथ क्लाउड-आधारित मैप स्टाइलिंग इस्तेमाल करने के उदाहरण दिए गए हैं.

ConsumerMapView

ConsumerMapView में क्लाउड-आधारित मैप स्टाइल का इस्तेमाल करने के लिए, mapId फ़ील्ड को GoogleMapOptions पर सेट करें और GoogleMapOptions को getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) या getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions) पर पास करें

उदाहरण

Java

public class SampleAppActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    ConsumerMapView mapView = findViewById(R.id.consumer_map_view);

    if (mapView != null) {
      GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
      mapView.getConsumerGoogleMapAsync(
          new ConsumerMapReadyCallback() {
            @Override
            public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
              // ...
            }
          },
          /* fragmentActivity= */ this,
          /* googleMapOptions= */ optionsWithMapId);
    }
  }
}

Kotlin

class SampleAppActivity : AppCompatActivity() {
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView

    val optionsWithMapId = GoogleMapOptions().mapId("map-id")
    mapView.getConsumerGoogleMapAsync(
      object : ConsumerGoogleMap.ConsumerMapReadyCallback() {
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          // ...
        }
      },
      /* fragmentActivity= */ this,
      /* googleMapOptions= */ optionsWithMapId)
  }
}

ConsumerMapFragment

कंज़्यूमरमैप फ़्रैगमेंट में क्लाउड-आधारित मैप स्टाइलिंग का इस्तेमाल करने के दो तरीके हैं:

  • स्टैटिक तौर पर, एक्सएमएल के साथ.
  • newInstance के साथ डाइनैमिक तौर पर.

एक्सएमएल के साथ स्टैटिक तौर पर

ConsumerMapFragment में एक्सएमएल के साथ क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करने के लिए, तय किए गए mapId के साथ map:mapId एक्सएमएल एट्रिब्यूट जोड़ें. नीचे दिया गया उदाहरण देखें:

<fragment
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:map="http://schemas.android.com/apk/res-auto"
    android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment"
    android:id="@+id/consumer_map_fragment"
    map:mapId="map-id"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

newInstance के साथ डाइनैमिक तौर पर इस्तेमाल करें

ConsumerMapFragment में newInstance के साथ क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करने के लिए, mapId फ़ील्ड को GoogleMapOptions पर सेट करें और GoogleMapOptions को newInstance पर पास करें. नीचे दिया गया उदाहरण देखें:

Java

public class SampleFragmentJ extends Fragment {

  @Override
  public View onCreateView(
      @NonNull LayoutInflater inflater,
      @Nullable ViewGroup container,
      @Nullable Bundle savedInstanceState) {

    final View view = inflater.inflate(R.layout.consumer_map_fragment, container, false);

    GoogleMapOptions optionsWithMapId = new GoogleMapOptions().mapId("map-id");
    ConsumerMapFragment consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId);

    getParentFragmentManager()
        .beginTransaction()
        .add(R.id.consumer_map_fragment, consumerMapFragment)
        .commit();

    consumerMapFragment.getConsumerGoogleMapAsync(
        new ConsumerMapReadyCallback() {
          @Override
          public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
            // ...
          }
        });

    return view;
  }
}

Kotlin

class SampleFragment : Fragment() {
  override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?): View? {

    val view = inflater.inflate(R.layout.consumer_map_fragment, container, false)

    val optionsWithMapId = GoogleMapOptions().mapId("map-id")
    val consumerMapFragment = ConsumerMapFragment.newInstance(optionsWithMapId)

    parentFragmentManager
      .beginTransaction()
      .add(R.id.consumer_map_fragment, consumerMapFragment)
      .commit()

    consumerMapFragment.getConsumerGoogleMapAsync(
      object : ConsumerMapReadyCallback() {
        override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
          // ...
        }
      })

    return view
  }
}

JavaScript के ज़रिए, उपभोक्ता की यात्रा की जानकारी शेयर करने वाले मैप पर मैप स्टाइल लागू करने के लिए, JourneySharingMapView बनाते समय mapId और कोई भी अन्य mapOptions तय करें.

यहां दिए गए उदाहरणों में, मैप आईडी के साथ मैप स्टाइल लागू करने का तरीका बताया गया है.

JavaScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    mapId: 'YOUR_MAP_ID'
  }
  // Any other styling options.
});

TypeScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    mapId: 'YOUR_MAP_ID'
  }
  // Any other styling options.
});

अपने कोड में सीधे तौर पर मैप को स्टाइल करना

JourneySharingMapView बनाते समय मैप के विकल्प सेट करके, मैप की स्टाइल को पसंद के मुताबिक भी बनाया जा सकता है. नीचे दिए गए उदाहरणों में, मैप के विकल्पों का इस्तेमाल करके मैप को स्टाइल करने का तरीका बताया गया है. मैप के कौनसे विकल्प सेट किए जा सकते हैं, इस बारे में ज़्यादा जानने के लिए, Google Maps JavaScript API के रेफ़रंस में mapOptions देखें.

JavaScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    styles: [
      {
        "featureType": "road.arterial",
        "elementType": "geometry",
        "stylers": [
          { "color": "#CCFFFF" }
        ]
      }
    ]
  }
});

TypeScript

const mapView = new google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  mapOptions: {
    styles: [
      {
        "featureType": "road.arterial",
        "elementType": "geometry",
        "stylers": [
          { "color": "#CCFFFF" }
        ]
      }
    ]
  }
});

यह कंट्रोल करना कि टास्क का डेटा, SDK टूल को दिखे या नहीं

मैप पर कुछ टास्क ऑब्जेक्ट दिखने के नियमों का इस्तेमाल करके, मैप पर कुछ टास्क ऑब्जेक्ट दिखने की सेटिंग को कंट्रोल किया जा सकता है.

टास्क का डेटा डिफ़ॉल्ट रूप से किसको दिखे

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

इस टेबल में दिखाया जाता है कि हर तरह के टास्क के लिए डिफ़ॉल्ट तौर पर किसको दिखे. कई टास्क के लिए, दिखने की सेटिंग को पसंद के मुताबिक बनाया जा सकता है. हालांकि, सभी टास्क के लिए ऐसा नहीं किया जा सकता. टास्क के टाइप के बारे में ज़्यादा जानने के लिए, शेड्यूल किए गए टास्क गाइड में टास्क के टाइप देखें.

टास्क का टाइप डिफ़ॉल्ट व्यू पसंद के मुताबिक बनाने की सुविधा है? ब्यौरा
उपलब्ध न होने वाले टास्क नहीं दिख रहा है नहीं इसका इस्तेमाल ड्राइवर के ब्रेक और ईंधन भरने के लिए किया जाता है. अगर डिलीवरी टास्क के लिए तय किए गए रास्ते में, वाहन के लिए कोई दूसरा स्टॉप भी है, तो उस स्टॉप को तब नहीं दिखाया जाता, जब उसमें सिर्फ़ ऐसे टास्क हों जो उपलब्ध नहीं हैं. डिलीवरी टास्क के लिए, डिलीवरी के अनुमानित समय और टास्क को पूरा करने के अनुमानित समय की जानकारी अब भी दिखती है.
'वाहन के टास्क' खोलें दिख रहा है हां टास्क पूरा होने या रद्द होने पर, वह अन्य लोगों को नहीं दिखता. आपके पास यह तय करने का विकल्प है कि गाड़ी के टास्क किसको दिखें. वाहन से जुड़े उन टास्क को अपनी पसंद के मुताबिक देखें जो पूरे नहीं किए गए हैं.
वाहन के लिए बंद किए गए टास्क नहीं दिख रहा है नहीं वाहन से जुड़े पूरे हो चुके टास्क को अपनी पसंद के मुताबिक नहीं दिखाया जा सकता.

वाहन से जुड़े पूरे नहीं किए गए टास्क को अपनी पसंद के मुताबिक दिखाना

TaskTrackingInfo इंटरफ़ेस में, टास्क के कई डेटा एलिमेंट होते हैं. इन्हें Consumer SDK टूल की मदद से दिखाया जा सकता है.

पसंद के मुताबिक बनाए जा सकने वाले टास्क डेटा एलिमेंट

रास्ते की पॉलीलाइन

पहुंचने का अनुमानित समय

टास्क पूरा होने में लगने वाला अनुमानित समय

टास्क की जगह तक ड्राइव करने में बाकी दूरी

बाकी बचे स्टॉप की संख्या

वाहन की जगह

हर टास्क के लिए, टास्क की स्थिति देखने के विकल्प

Fleet Engine में कोई टास्क बनाते या अपडेट करते समय, TaskTrackingViewConfig को सेट करके, हर टास्क के हिसाब से, 'किसको दिखे' कॉन्फ़िगरेशन को अपनी पसंद के मुताबिक बनाया जा सकता है. टास्क एलिमेंट की विज़िबिलिटी तय करने के लिए, विज़िबिलिटी के इन विकल्पों का इस्तेमाल करें:

'किसको दिखे' सेटिंग के विकल्प

बाकी बचे स्टॉप की संख्या

पहुंचने के अनुमानित समय तक का समय

ड्राइविंग के लिए बची हुई दूरी

मैसेज हमेशा दिखता है

कभी नहीं दिखता

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

जिस डेटा एलिमेंट में बदलाव करना है किसको दिखे मानदंड
रूट की पॉलीलाइन दिखाएं वाहन तीन स्टॉप के अंदर हो.
ईटीए दिखाएं ड्राइविंग की बाकी दूरी 5,000 मीटर से कम हो.
बाकी बचे स्टॉप की संख्या कभी न दिखाएं वाहन तीन स्टॉप के अंदर हो.

इस कॉन्फ़िगरेशन को यहां दिए गए उदाहरण में दिखाया गया है:

"taskTrackingViewConfig": {
  "routePolylinePointsVisibility": {
    "remainingStopCountThreshold": 3
  },
  "estimatedArrivalTimeVisibility": {
    "remainingDrivingDistanceMetersThreshold": 5000
  },
  "remainingStopCountVisibility": {
    "never": true
  }
}

रास्ते की पॉलीलाइन और वाहन की जगह की जानकारी दिखने के नियम

जब तक वाहन की जगह की जानकारी न दिखे, तब तक रास्ते की पॉलीलाइन नहीं दिखेगी. ऐसा न होने पर, पॉलीलाइन के आखिर में गाड़ी की जगह का पता लगाया जा सकता है.

इन दिशा-निर्देशों की मदद से, रूट पॉलीलाइन और वाहन की जगह के दिखने से जुड़े विकल्पों का मान्य कॉम्बिनेशन दिया जा सकता है.

प्रॉडक्ट की जानकारी दिखाने के विकल्प प्रॉडक्ट दिखने की शर्त दिशा-निर्देश
रास्ते के पॉलीलाइन के विकल्प, हमेशा दिखने के लिए सेट किए गए हैं. गाड़ी की जगह की जानकारी को हमेशा दिखने के लिए सेट करें.
गाड़ी की जगह की जानकारी 'कभी नहीं दिखे' पर सेट हो. रास्ते की पॉलीलाइन को 'कभी दिखाई न दें' पर सेट करें.
'किसको दिखे' सेटिंग के ये विकल्प हैं:
  • बाकी बचे स्टॉप की संख्या
  • ईटीए तक का समय
  • ड्राइविंग की बाकी दूरी

रास्ते के पॉलीलाइन विकल्पों को, वाहन की जगह के लिए सेट की गई वैल्यू से कम या उसके बराबर पर सेट करें. उदाहरण के लिए:

    "taskTrackingViewConfig": {
      "routePolylinePointsVisibility": {
        "remainingStopCountThreshold": 3
      },
      "vehicleLocationVisibility": {
        "remainingStopCountThreshold": 5
      },
    }
    
'किसको दिखे' सेटिंग के अलग-अलग विकल्प प्रॉडक्ट के दिखने की शर्तें दिशा-निर्देश
गाड़ी की जगह की जानकारी दिख रही है

ऐसा सिर्फ़ तब होता है, जब वाहन की जगह की जानकारी और पॉलीलाइन दिखने के विकल्प, दोनों चालू हों. उदाहरण के लिए:

  "taskTrackingViewConfig": {
    "routePolylinePointsVisibility": {
      "remainingStopCountThreshold": 3
    },
    "vehicleLocationVisibility": {
      "remainingDrivingDistanceMetersThreshold": 3000
    },
  }

इस उदाहरण में, वाहन की जगह सिर्फ़ तब दिखती है, जब बचे हुए स्टॉप की संख्या कम से कम तीन हो और बचे हुए सफ़र की दूरी कम से कम 3,000 मीटर हो.

अपने-आप फ़िट होने की सुविधा बंद करना

अपने-आप फ़िट होने की सुविधा बंद करके, मैप को वाहन और अनुमानित रास्ते के हिसाब से, व्यूपोर्ट को अपने-आप फ़िट होने से रोका जा सकता है. यहां दिए गए उदाहरण में, सफ़र की जानकारी शेयर करने वाले मैप व्यू को कॉन्फ़िगर करते समय, अपने-आप फ़िट होने की सुविधा को बंद करने का तरीका बताया गया है.

JavaScript

const mapView = new
    google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  automaticViewportMode:
      google.maps.journeySharing
          .AutomaticViewportMode.NONE,
  ...
});

TypeScript

const mapView = new
    google.maps.journeySharing.JourneySharingMapView({
  element: document.getElementById('map_canvas'),
  locationProviders: [locationProvider],
  automaticViewportMode:
      google.maps.journeySharing
          .AutomaticViewportMode.NONE,
  ...
});

आगे क्या करना है