Tüketici uygulamanızda bir yolculuğu 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 geziyi takip etmek için harita parçası tanımlama.
- Haritalar temel 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 desteği ekleyin.
Bir harita tanımladıktan sonra, görsel deneyimi özelleştirmek için ek görünümler ve kamera kontrolleri ekleyebilirsiniz. Daha fazla bilgi için Harita stilini belirleme 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 yolculuğu 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 kullanın:
ConsumerMapFragment
: HaritanızıFragment
ile tanımlamak için kullanılır.ConsumerMapView
:View
içeren bir harita tanımlamak için kullanılır.
Her iki yöntemde de aynı özellikler bulunur. Bu nedenle, uygulamanız için daha uygun olan yöntemi seçin.
Her iki yöntem de sonraki bölümde daha ayrıntılı olarak açıklanmıştı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 örneklerine bakın.
/res/layout
konumundaki uygulama düzeni XML dosyanızda bir parça veya görünüm tanımlayın. Seyahat haritasınıConsumerMapFragment
kullanarak bir parça veyaConsumerMapView
kullanarak bir görünüm olarak tanımlayın.Daha sonra bu parça veya görünüm, uygulamanızın erişip değiştirebileceği gezi haritasına erişim sağlar. Harita ayrıca
ConsumerController
için bir tutma yeri sağlar. Bu tutma yeri, uygulamanızın tüketici deneyimini kontrol etmesine ve özelleştirmesine olanak tanır.onCreate()
yönteminizdengetConsumerGoogleMapAsync(callback)
yöntemini çağırın. Bu yöntem, geri çağırmadaConsumerGoogleMap
değerini eşzamansız olarak döndürür.Seyahat ilerleme durumunu göstermek ve gerektiğinde güncellemek için
ConsumerGoogleMap
simgesini kullanın.
ConsumerMapFragment
ekleme örneği
Parçayı, aşağıdaki kod örneğinde gösterildiği gibi uygulama düzeni XML dosyanızda 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öntemini kullanarakgetConsumerGoogleMapAsync()
numarasına arama 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()
adlı kişidengetConsumerGoogleMapAsync()
adlı kişiyi arayın. Geri çağırma parametresine ek olarak aşağıdaki ayrıntıları da ekleyin:Etkinliği veya parçayı içeren. Etkinlik veya parça temel sınıfı, yaşam döngüsüne erişim sağladığından sırasıyla
FragmentActivity
veya destekFragment
olmalıdır.GoogleMapOptions
(boş olabilir),MapView
için yapılandırma özelliklerini içerir.
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. Ancak parça, onCreateView()
yönteminde MapView
içeren düzeni genişletir.
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: Haritalar temel katmanı ve görünüm denetleyicisi için destek ekleyin
Uygulamanızda gezi ilerleme durumunu paylaşmak için uygulamanıza aşağıdaki sınıfları ekleyin: ConsumerGoogleMap
ve ConsumerController
.
ConsumerGoogleMap
değerini, her ikisi deConsumerGoogleMap
değeriniConsumerMapReadyCallback
içinde eşzamansız olarak döndürenConsumerMapFragment
veyaConsumerMapView
değerinden alın.ConsumerGoogleMap
,GoogleMap
sınıfı için bir sarmalayıcı sınıftır. Uygulamanızın haritayla etkileşim kurabilmesi içinGoogleMap
ile eşdeğer bir API kullanır. Bu sayede uygulamanız, aynı temel Google Haritası ile sorunsuz şekilde etkileşim kurabilir. Örneğin,GoogleMap
yalnı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()
bölgesindeConsumerGoogleMap
uygulamasındanConsumerController
kazanın.ConsumerController
; yolculukları izleme, yolculuk durumunu kontrol etme ve konum ayarlama gibi yolculuk 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ızda vektör grafikler için destek gerekiyorsa aşağıdaki adımları uygulayarak Android cihazlar ve vektör çizilebilir öğeler için destek ekleyin:
- Etkinliğinize aşağıdaki kodu ekleyin. Bu kod, Consumer SDK'da vektör çizilebilir öğelerin kullanılması 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() {
// ...
}
Sonraki Adımlar
Android'de bir geziyi takip etme