سبک‌دار کردن نقشه

انتخاب پلاتفرم: Android iOS JavaScript

این راهنما روش‌هایی را شرح می‌دهد که می‌توانید با آن‌ها نقشه نمایش‌داده‌شده در برنامه iOS خود را هنگام دنبال کردن سفر سبک‌بندی کنید.

قبل‌از شروع

قبل‌از اینکه برای نقشه سبک تعیین کنید، باید برنامه مصرف‌کننده‌ای داشته باشید که موارد زیر در آن پیاده‌سازی شده باشد:

همچنین باید خدمات زیرینه موردنیاز «کیت توسعه نرم‌افزار مصرف‌کننده» را راه‌اندازی کرده باشید و «کیت توسعه نرم‌افزار مصرف‌کننده» را راه‌اندازی کنید. برای جزئیات بیشتر، راه‌اندازی کیت توسعه نرم‌افزار مصرف‌کننده و Fleet Engine چیست؟ را ببینید.

سفارشی‌سازی‌های نقشه

سفارشی‌سازی‌های دردسترس به شرح زیر است:

  • سبک‌پردازی نقشه: می‌توانید رنگ‌های نقشه، چندخطی‌ها، و دیگر ویژگی‌های نقشه را بااستفاده از سبک‌پردازی نقشه مبتنی بر فضای ابری سبک‌پردازی کنید. سبک‌دار کردن نقشه را ببینید.

  • تنظیم زوم دوربین: می‌توانید از ویژگی داخلی استفاده کنید یا گزینه‌های دوربین خودتان را برای تمرکز روی سفر تنظیم کنید. به تنظیم کردن زوم دوربین برای تمرکز روی سفر مراجعه کنید.

  • سفارشی‌سازی نشانگرها و چندخطی‌ها: می‌توانید نشانگرهای سفارشی و چندخطی‌های مسیر به طراحی برنامه‌تان اضافه کنید. این عناصر طراحی به برنامه «مصرف‌کننده» شما امکان می‌دهد پیش‌نمایش پویایی از مسیر خودرو نمایش دهد. سفارشی‌سازی نشانگرها و سفارشی‌سازی چندخطی‌ها را ببینید.

    این کیت توسعه نرم‌افزار این گزینه‌ها را ازطریق consumerMapStyleCoordinator دارایی ارائه می‌دهد. این دارایی ازطریق کلاس GMTCMapView دردسترس است.

سبک‌پردازی نقشه بااستفاده از سبک‌پردازی نقشه ابری

بااستفاده از سبک‌پردازی نقشه بااستفاده از فضای ابری، ظاهر و احساس مؤلفه نقشه‌ها را سفارشی‌سازی کنید. بدون نیاز به ایجاد تغییر در کد، سبک‌های نقشه را در کنسول 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);
    }
  }
}

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

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

به‌صورت ایستا با زبان نشانه‌گذاری توسعه‌پذیر

برای استفاده از سبک‌پردازی نقشه بااستفاده از فضای ابری با 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;
  }
}

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

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

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

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

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

‫AutoCamera به‌طور پیش‌فرض دوربین را در مرکز قرار می‌دهد

«کیت توسعه نرم‌افزار مصرف‌کننده» ویژگی AutoCamera را ارائه می‌دهد که به‌طور پیش‌فرض در دکمه داخلی مکان من برای «کیت توسعه نرم‌افزار Maps» فعال است. دوربین زوم می‌کند تا روی مسیر سفر و ایستگاه بعدی سفر تمرکز کند.

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

`AutoCamera`

برای جزئیات مربوط به دکمه مکان من در «کیت توسعه نرم‌افزار Maps»، به دکمه «مکان من» در اسناد «کیت توسعه نرم‌افزار Maps» برای iOS مراجعه کنید.

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

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

AutoCamera را با AllowCameraAutoUpdate دارایی غیرفعال یا فعال کنید.

برای سفارشی‌سازی‌های بیشتر دوربین، حرکت دادن دوربین را در اسناد کیت توسعه نرم‌افزار Maps برای iOS ببینید.

قدم بعدی چیست

دنبال کردن سفر در iOS