این راهنما روشهایی را شرح میدهد که میتوانید نقشهای را که هنگام دنبال کردن یک سفر در برنامه اندروید شما نمایش داده میشود، سفارشی کنید. میتوانید ظاهر و حس نقشه را به روشهای زیر سفارشی کنید:
- نقشه را با استفاده از سبک نقشههای مبتنی بر ابر، استایل دهید
- دوربین را طوری تنظیم کنید که روی سفر تمرکز کند
- نشانگرها را سفارشی کنید
- سفارشیسازی چندخطیها
نقشه را با استفاده از سبک نقشههای مبتنی بر ابر، استایل دهید
ظاهر و حس کامپوننت نقشهها را با استفاده از سبکبندی نقشههای مبتنی بر ابر سفارشی کنید. شما میتوانید سبکهای نقشه را در کنسول 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 غیرفعال کنید و رفتار دوربین را به صورت دستی سفارشی کنید.
غیرفعال کردن
AutoCameraبا استفاده از ConsumerController.setAutoCameraEnabled()با استفاده از ()ConsumerController.getCameraUpdate، محدودههای دوربین پیشنهادی را دریافت کنید.
CameraUpdateبه عنوان آرگومان به یکی از این توابع اندروید ارائه دهید: