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

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

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

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

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

दिखने के विकल्प

शेष स्टॉप की संख्या

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

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

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

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

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

जिस डेटा एलिमेंट में बदलाव करना है किसको दिखाई दे मानदंड
रूट पॉलीलाइन दिखाएं वाहन तीन स्टॉप के अंदर है.
ETA दिखाएं ड्राइविंग की बाकी दूरी 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,
  ...
});

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