Tüketici uygulamanızda bir geziyi takip etmek için öncelikle bir harita oluşturmalı ve gerekirse vektör haritaları için destek eklemelidir.
Uygulamanızda harita oluşturmak için aşağıdaki adımları izleyin:
- Yolculuk paylaşımı için bir harita parçası tanımlayın.
- Haritalar temel katmanı ve görünüm denetleyicisi için destek ekleyin.
- Vektörü görüntülemek amacıyla Android vektör grafikleri desteği ekleme haritalara yer verebilirsiniz.
Bir harita tanımladıktan sonra, ek görünümler ve kamera görüntüleri ekleyebilirsiniz görsel deneyimi özelleştirmek istediğiniz kontrol düğmelerini kullanın. Daha ayrıntılı bilgi için Harita stili belirleme başlıklı makaleyi inceleyin.
1. Adım: Yolculuk paylaşımı için bir harita parçası tanımlayın
Bir haritayı, mevcut bir harita yerine bir harita parçası veya görünümü ekleyerek tüketici uygulamanızda isteğe bağlı bir geziyi paylaşıyorsunuz. Haritanızı tanımlamak için aşağıdaki yöntemlerden birini uygulayın:
ConsumerMapFragment
: Haritanızı şununla tanımlamak için kullanın:Fragment
ConsumerMapView
: Bir haritayıView
Özellikler her iki yöntemin de aynı olduğundan hangi yöntemi seçin? uygulamanız için daha iyidir.
Her iki yöntem de aşağıdaki bölümde daha ayrıntılı olarak açıklanmaktadır.
Harita parçası veya görünümü ekleme
Gezi seyrini görüntülemek üzere bir harita oluşturmak için bir Android parçası veya görünümü varsa bu adımları izleyin ve kullanabilirsiniz.
Uygulama düzeni XML dosyanızda bulunan bir parça veya görünüm tanımlayın:
/res/layout
Yolculuk paylaşımı haritasını aşağıdakileri kullanarak bir parça olarak tanımlayın:ConsumerMapFragment
veyaConsumerMapView
kullanan bir görünüm olarak.Ardından parça veya görünüm, yolculuğa erişim sağlar erişip değiştirebileceği bir harita paylaşımında bulunun. Harita ayrıca
ConsumerController
için tutma yeri, uygulamanızın kontrol ve kontrol etmesini sağlar. yolculuk paylaşımı deneyimini özelleştirebilirsiniz.onCreate()
yönteminizdengetConsumerGoogleMapAsync(callback)
işlevini çağırın, Bu, geri çağırmadaConsumerGoogleMap
eşzamansız olarak döndürür.Gezi seyrini görüntülemek ve gerektiğinde güncellemek için
ConsumerGoogleMap
simgesini kullanın.
ConsumerMapFragment
ekleme örneği
Parçayı aşağıdaki gibi uygulama düzeni XML dosyanızda tanımlayın: aşağıdaki kod örneğine bakalım.
<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:name="com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapFragment" android:id="@+id/consumer_map_fragment" android:layout_width="match_parent" android:layout_height="match_parent" />
onCreate()
içindengetConsumerGoogleMapAsync()
numaralı telefonu arayın yöntemidir.
Java
public class SampleAppActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// Find the ConsumerMapFragment.
ConsumerMapFragment consumerMapFragment =
(ConsumerMapFragment) fragmentManager.findFragmentById(R.id.consumer_map_fragment);
// Initiate the callback that returns the map.
if (consumerMapFragment != null) {
consumerMapFragment.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
// The map returned in the callback is used to access the ConsumerController.
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
ConsumerController consumerController = consumerGoogleMap.getConsumerController();
}
});
}
}
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
// Find the ConsumerMapFragment.
val consumerMapFragment =
fragmentManager.findFragmentById(R.id.consumer_map_fragment) as ConsumerMapFragment
consumerMapFragment.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
val consumerController = consumerGoogleMap.getConsumerController()!!
}
}
)
}
}
ConsumerMapView
ekleme örneği
Görünümü aşağıda açıklandığı gibi bir parçanın içinde veya bir etkinlikte kullanın: XML dosyası olarak kaydedin.
<com.google.android.libraries.mapsplatform.transportation.consumer.view.ConsumerMapView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/consumer_map_view" android:layout_width="match_parent" android:layout_height="match_parent" />
onCreate()
uygulamasındangetConsumerGoogleMapAsync()
numaralı telefonu ara. İçinde geri çağırma parametresine ek olarak aşağıdaki bilgileri ekleyin:Kapsayıcı etkinliği veya parça. Etkinlik veya parça tabanı sınıfı bir
FragmentActivity
veya destekFragment
olmalıdır ürün yaşam döngüsüne erişim sağladığı için (sırasıyla)Yapılandırmayı içeren
GoogleMapOptions
(boş olabilir) özellikleriMapView
için geçerlidir.
Java
public class SampleAppActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
ConsumerMapView mapView = findViewById(R.id.consumer_map_view);
if (mapView != null) {
mapView.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
// The map returned in the callback is used to access the ConsumerController.
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerGoogleMap) {
ConsumerController consumerController = consumerGoogleMap.getConsumerController();
}
}, this, null);
}
}
}
Kotlin
class SampleAppActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
val mapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
mapView.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
// The map returned in the callback is used to access the ConsumerController.
override fun onConsumerMapReady(consumerGoogleMap: ConsumerGoogleMap) {
val consumerController = consumerGoogleMap.getConsumerController()!!
}
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ null,
)
}
}
Bir parçadaki MapView
, önceki örneğindekiyle aynıdır.
MapView
parçasının, parçanın
onCreateView()
parçası yönteminde MapView
öğesini içerir.
Java
public class MapViewInFragment extends Fragment {
@Override
public View onCreateView(
@NonNull LayoutInflater layoutInflater,
@Nullable ViewGroup viewGroup,
@Nullable Bundle bundle) {
return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false);
}
}
Kotlin
class MapViewInFragment : Fragment() {
override fun onCreateView(
layoutInflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?,
): View {
return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false)
}
}
2. Adım: Harita temel katmanı ve görünüm denetleyicisi için destek ekleyin
Uygulamanızda yolculuk paylaşımını etkinleştirmek için
şu sınıfları uygulamanıza ekleyin: ConsumerGoogleMap
ve ConsumerController
.
ConsumerGoogleMap
öğesiniConsumerMapFragment
veyaConsumerMapView
(her ikisi de eşzamansız olarak döndürülür)ConsumerMapReadyCallback
içindeConsumerGoogleMap
.ConsumerGoogleMap
,GoogleMap
sınıfı için bir sarmalayıcı sınıfıdır. Bir Uygulamanızın haritayla etkileşim kurabilmesi içinGoogleMap
ile eşdeğer API. Bu şekilde, uygulamanız, Google Cloud Platform'un sunduğu haritası. Örneğin,GoogleMap
yalnızca tek bir geri arama kaydına izin verir, ancakConsumerGoogleMap
, çift kayıtlı geri çağırmayı destekler. Bu geri çağırma işlevleri, sırayla çağrılan uygulama kaydı geri çağırmaları bulun.getConsumerController()
bölgesindeConsumerGoogleMap
adlı satıcıdanConsumerController
kazanın.ConsumerController
, şu gibi yolculuk paylaşımı özelliklerine erişim sağlar: seyahat durumunu kontrol etme ve yer belirleme gibi ayarlar ekleyebilirsiniz.
ConsumerGoogleMap
ve ConsumerController
uygulamalarını uygulamanıza nasıl ekleyeceğiniz için
Java ve Kotlin için aşağıdaki örneklere bakın.
Java
private ConsumerGoogleMap consumerGoogleMap;
private ConsumerController consumerController;
private ConsumerMapView consumerMapView;
consumerMapView.getConsumerGoogleMapAsync(
new ConsumerMapReadyCallback() {
@Override
public void onConsumerMapReady(@NonNull ConsumerGoogleMap consumerMap) {
consumerGoogleMap = consumerMap;
consumerController = consumerMap.getConsumerController();
}
},
this, null);
Kotlin
var consumerGoogleMap: ConsumerGoogleMap
var consumerController: ConsumerController
val consumerMapView = findViewById(R.id.consumer_map_view) as ConsumerMapView
consumerMapView.getConsumerGoogleMapAsync(
object : ConsumerMapReadyCallback() {
override fun onConsumerMapReady(consumerMap: ConsumerGoogleMap) {
consumerGoogleMap = consumerMap
consumerController = consumerMap.getConsumerController()
},
/* fragmentActivity= */ this,
/* googleMapOptions= */ null,
}
)
3. Adım: Android vektör grafikleri için destek ekleyin
Uygulama tasarımınız vektör grafikleri için destek gerektiriyorsa, Android cihazlar ve vektör çekilebilir öğeleri için şu adımları uygulayın:
- Aşağıdaki kodu Etkinliğinize ekleyin. Bu kodların kullanım kapsamı
Tüketici SDK'sında Vector çekilebilir kaynaklarını kullanmak için
AppCompatActivity
.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}