Tüketici uygulamanızda bir seyahati takip etmek için önce bir harita tanımlamanız ve gerekirse vektör haritalar için destek eklemeniz gerekir.
Uygulamanızda harita oluşturmak için aşağıdaki adımları uygulayın:
- Bir seyahati takip etmek için harita parçası tanımlama.
- Harita taban katmanı ve görünüm denetleyicisi için destek ekleyin.
- Gerekirse vektör haritaları görüntülemek için Android vektör grafikleri için destek ekleyin.
Bir harita tanımladıktan sonra, görsel deneyimi özelleştirmek için istediğiniz ek görünümleri ve kamera kontrollerini ekleyebilirsiniz. Daha fazla bilgi için Haritaya stil uygulama başlıklı makaleyi inceleyin.
1. Adım: Bir geziyi takip etmek için harita parçası tanımlayın
Tüketici uygulamanızda isteğe bağlı bir seyahati paylaştığınız haritayı oluşturmak için bir harita parçası veya görünümü ekleyerek haritayı tanımlarsınız. Haritanızı tanımlamak için aşağıdaki yöntemlerden birini uygulayın:
ConsumerMapFragment: HaritanızıFragmentile tanımlamak için kullanılır.ConsumerMapView:Viewile bir harita tanımlamak için kullanılır.
Özellikler her iki yöntem için de aynıdır. Bu nedenle, uygulamanız için daha iyi olan yöntemi seçin.
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
Android parçası veya görünüm kullanarak gezi ilerleme durumunu gösteren bir harita oluşturmak için aşağıdaki adımları uygulayın ve kod örneklerini inceleyin.
/res/layoutkonumundaki uygulama düzeni XML dosyanızda bir parça veya görünüm tanımlayın. Gezi haritasınıConsumerMapFragmentkullanarak bir parça olarak veyaConsumerMapViewkullanarak bir görünüm olarak tanımlayın.Ardından, parça veya görünüm, uygulamanızın erişebileceği ve değiştirebileceği gezi haritasına erişim sağlar. Harita,
ConsumerControlleriçin bir tutma yeri de sağlar. Bu sayede uygulamanız, tüketici deneyimini kontrol edip özelleştirebilir.onCreate()yönteminizdengetConsumerGoogleMapAsync(callback)yöntemini çağırın. Bu yöntem, geri çağırmadaConsumerGoogleMapdeğerini eşzamansız olarak döndürür.Gezi ilerleme durumunu görüntülemek ve gerektiğinde güncellemek için
ConsumerGoogleMapsimgesini kullanın.
ConsumerMapFragment ekleme örneği
Aşağıdaki kod örneğinde gösterildiği gibi, uygulama düzeni XML dosyanızda parçayı tanımlayın.
<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()yöntemindengetConsumerGoogleMapAsync()yöntemine çağrı yapın.
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ü, XML dosyanızda tanımlandığı şekilde bir parçada veya etkinlikte kullanın.
<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()numarasındangetConsumerGoogleMapAsync()numarasını arayın. Geri çağırma parametresine ek olarak aşağıdaki bilgileri ekleyin:İçeren etkinlik veya parça. Etkinlik veya parça temel sınıfı, yaşam döngüsüne erişim sağladığından sırasıyla
FragmentActivityveya destekFragmentolmalıdır.MapViewiçin yapılandırma özelliklerini içerenGoogleMapOptions(boş olabilir).
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, bir etkinlikteki MapView için önceki örnekle aynıdır. Tek fark, parçanın, parçadaki MapView öğesini içeren düzeni onCreateView() yönteminde şişirmesidir.
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 taban katmanı ve görünüm denetleyicisi için destek ekleme
Uygulamanızda gezi seyrini paylaşmak için uygulamanıza şu sınıfları ekleyin: ConsumerGoogleMap ve ConsumerController.
ConsumerGoogleMapdeğeriniConsumerMapFragmentveyaConsumerMapViewyöntemlerinden biriyle alın. Bu yöntemlerin her ikisi deConsumerGoogleMapdeğeriniConsumerMapReadyCallbackiçinde eşzamansız olarak döndürür.ConsumerGoogleMap,GoogleMapsınıfı için bir sarmalayıcı sınıftır. Uygulamanızın haritayla etkileşim kurabilmesi içinGoogleMapile eşdeğer bir API kullanır. Bu sayede uygulamanız, temel alınan aynı Google haritasıyla sorunsuz bir şekilde etkileşim kurabilir. Örneğin,GoogleMapyalnızca tek bir geri çağırma kaydına izin verirkenConsumerGoogleMap, çift kayıtlı geri çağırmaları destekler. Bu geri çağırmalar, uygulamanızın sırayla çağrılan geri çağırmaları kaydetmesine olanak tanır.getConsumerController()içindeConsumerGoogleMapuygulamasındanConsumerControlleralın.ConsumerController, gezileri izleme, gezi durumunu kontrol etme ve konumları ayarlama gibi gezi paylaşımı özelliklerine erişim sağlar.
Java ve Kotlin'de uygulamanıza ConsumerGoogleMap ve ConsumerController ekleme hakkında bilgi edinmek 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 grafikler için destek gerektiriyorsa aşağıdaki adımları uygulayarak Android cihazlar ve drawable vektörler için destek ekleyin:
- Aşağıdaki kodu etkinliğinize ekleyin. Bu kod, Tüketici SDK'sında drawable vektörleri kullanmak için
AppCompatActivityöğesini genişletir.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}