این راهنما روشهایی را توضیح میدهد که میتوانید نقشهای را که در برنامه Android شما هنگام دنبال کردن سفر نمایش داده میشود، سفارشی کنید. می توانید ظاهر و احساس نقشه را به روش های زیر سفارشی کنید:
- نقشه را با طراحی نقشه های مبتنی بر ابر طراحی کنید
- دوربین را طوری تنظیم کنید که در سفر فوکوس کند
- نشانگرها را سفارشی کنید
- سفارشی کردن چند خط
نقشه را با طراحی نقشه های مبتنی بر ابر طراحی کنید
ظاهر و احساس جزء نقشه ها را با استفاده از سبک نقشه های مبتنی بر ابر سفارشی کنید. برای هر یک از برنامههای خود که از Google Maps استفاده میکنند، بدون نیاز به تغییر در کد، سبکهای نقشه را در کنسول Google Cloud ایجاد و ویرایش میکنید. برای اطلاعات بیشتر، پلتفرم خود را در طرحبندی نقشههای مبتنی بر ابر انتخاب کنید.
هر دو کلاس ConsumerMapView و ConsumerMapFragment از طراحی نقشه های مبتنی بر ابر پشتیبانی می کنند. به منظور استفاده از طرحبندی نقشههای مبتنی بر ابر، مطمئن شوید که رندر نقشه انتخابشده LATEST است. بخشهای زیر نمونههایی از نحوه استفاده از طرحبندی نقشههای مبتنی بر ابر در پروژه خود را نشان میدهند.
ConsumerMapView
برای استفاده از طرحبندی نقشههای مبتنی بر ابر در ConsumerMapView ، فیلد mapId در GoogleMapOptions تنظیم کنید و GoogleMapOptions به getConsumerGoogleMapAsync(ConsumerMapReadyCallback، Fragment، GoogleMapOptions) یا getConsumerGoogleMapAsync(ConsumerConsumerCallback,FragdyConsumerCallback) ارسال کنید.
مثال
جاوا
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 ، ویژگی map:mapId XML را با 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 مراجعه کنید.

برای جزئیات بیشتر در مورد دکمه موقعیت مکانی من ، به دکمه موقعیت مکانی من در اسناد Maps JavaScript API مراجعه کنید.
رفتار دوربین را سفارشی کنید
برای کنترل بیشتر رفتار دوربین، این مراحل را دنبال کنید تا AutoCamera غیرفعال کنید و رفتار دوربین را به صورت دستی سفارشی کنید.
AutoCameraبا استفاده از ConsumerController.setAutoCameraEnabled() غیرفعال کنید.محدوده های توصیه شده دوربین را با استفاده از ConsumerController.getCameraUpdate() دریافت کنید.
CameraUpdateبه عنوان آرگومان برای یکی از این توابع اندروید ارائه دهید:
بعدش چی
یک سفر را در اندروید دنبال کنید