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

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

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

मैप को क्लाउड-आधारित मैप स्टाइलिंग के हिसाब से बनाएं

क्लाउड पर मैप की स्टाइलिंग की सुविधाओं का इस्तेमाल करके, मैप कॉम्पोनेंट के लुक और स्टाइल को पसंद के मुताबिक बनाएं. 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

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

  • स्टैटिक तौर पर, एक्सएमएल के साथ.
  • 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 के साथ क्लाउड-आधारित मैप स्टाइलिंग का इस्तेमाल करने के लिए, GoogleMapOptions पर mapId फ़ील्ड सेट करें और 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
  }
}

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

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

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

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

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

    "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,
  ...
});

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