به یک نقشه سبک دهید

پلتفرم مورد نظر را انتخاب کنید: اندروید، iOS، جاوا اسکریپت

این راهنما روش‌هایی را شرح می‌دهد که می‌توانید نقشه‌ای را که هنگام دنبال کردن یک سفر در برنامه اندروید شما نمایش داده می‌شود، سفارشی کنید. می‌توانید ظاهر و حس نقشه را به روش‌های زیر سفارشی کنید:

نقشه را با استفاده از سبک نقشه‌های مبتنی بر ابر، استایل دهید

ظاهر و حس کامپوننت نقشه‌ها را با استفاده از سبک‌بندی نقشه‌های مبتنی بر ابر سفارشی کنید. شما می‌توانید سبک‌های نقشه را در کنسول Google Cloud برای هر یک از برنامه‌های خود که از Google Maps استفاده می‌کنند، بدون نیاز به هیچ تغییری در کد خود، ایجاد و ویرایش کنید. برای اطلاعات بیشتر، پلتفرم خود را در سبک‌بندی نقشه‌های مبتنی بر ابر انتخاب کنید.

هر دو کلاس ConsumerMapView و ConsumerMapFragment از استایل‌بندی نقشه‌های مبتنی بر ابر پشتیبانی می‌کنند. برای استفاده از استایل‌بندی نقشه‌های مبتنی بر ابر، مطمئن شوید که رندرکننده نقشه‌های انتخاب شده LATEST باشد. بخش‌های زیر نمونه‌هایی از نحوه استفاده از استایل‌بندی نقشه‌های مبتنی بر ابر را در پروژه شما نشان می‌دهد.

ConsumerMapView

برای استفاده از سبک‌دهی نقشه‌های مبتنی بر ابر در ConsumerMapView ، فیلد mapId روی GoogleMapOptions تنظیم کنید و GoogleMapOptions به getConsumerGoogleMapAsync(ConsumerMapReadyCallback, Fragment, GoogleMapOptions) یا getConsumerGoogleMapAsync(ConsumerMapReadyCallback, FragmentActivity, GoogleMapOptions) ارسال کنید.

مثال

جاوا

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);
    }
  }
}

کاتلین

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 وجود دارد:

  • به صورت ایستا با XML.
  • به صورت پویا با newInstance .

به صورت ایستا با XML

برای استفاده از سبک‌دهی نقشه‌های مبتنی بر ابر با XML در ConsumerMapFragment ، ویژگی XML map:mapId با 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

برای استفاده از سبک‌دهی نقشه‌های مبتنی بر ابر با newInstance در ConsumerMapFragment ، فیلد mapId روی GoogleMapOptions تنظیم کنید و GoogleMapOptions را به newInstance ارسال کنید. به مثال زیر توجه کنید:

جاوا

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;
  }
}

کاتلین

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
  }
}

زوم دوربین را برای تمرکز روی یک سفر تنظیم کنید

در طول یک جلسه اشتراک‌گذاری سفر فعال، می‌توانید زوم و فوکوس دوربین را به یکی از دو روش زیر مدیریت کنید:

  • AutoCamera : اگر می‌خواهید از AutoCamera استفاده کنید، لازم نیست کاری انجام دهید. دوربین سفر را دنبال می‌کند. برای جزئیات بیشتر، به AutoCamera مراجعه کنید.

  • سفارشی‌سازی رفتار دوربین: برای سفارشی‌سازی رفتار دوربین، باید AutoCamera غیرفعال کنید و سپس سفارشی‌سازی‌های خود را انجام دهید. برای جزئیات بیشتر، به سفارشی‌سازی رفتار دوربین مراجعه کنید.

AutoCamera دوربین را در مرکز قرار می‌دهد

کیت توسعه نرم‌افزار مصرف‌کننده (Consumer SDK) یک ویژگی AutoCamera ارائه می‌دهد که به طور پیش‌فرض روی دکمه «موقعیت مکانی من» (My Location) تعبیه‌شده برای کیت توسعه نرم‌افزار نقشه‌ها (Maps SDK) فعال است. دوربین برای تمرکز روی مسیر سفر و نقطه مسیر بعدی، زوم می‌کند.

اگر می‌خواهید از AutoCamera استفاده کنید، حتماً آن را فعال کنید. برای جزئیات بیشتر، به isAutoCameraEnabled مراجعه کنید.

«دوربین خودکار»

برای جزئیات بیشتر در مورد دکمه «موقعیت مکانی من» ، به دکمه «موقعیت مکانی من» در مستندات API جاوا اسکریپت نقشه‌ها مراجعه کنید.

سفارشی‌سازی رفتار دوربین

برای کنترل بیشتر رفتار دوربین، مراحل زیر را دنبال کنید تا AutoCamera غیرفعال کنید و رفتار دوربین را به صورت دستی سفارشی کنید.

  1. غیرفعال کردن AutoCamera با استفاده از ConsumerController.setAutoCameraEnabled()

  2. با استفاده از ()ConsumerController.getCameraUpdate، محدوده‌های دوربین پیشنهادی را دریافت کنید.

  3. CameraUpdate به عنوان آرگومان به یکی از این توابع اندروید ارائه دهید:

قدم بعدی چیست؟

دنبال کردن یک سفر در اندروید