Tüketici uygulamanızda bir geziyi takip etmek için öncelikle 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ımlayın.
- Harita ana katmanı ve görüntü kontrol cihazı desteği ekleyin.
- Gerekirse vektör haritalarını görüntülemek için Android vektör grafikleri desteği ekleyin.
Bir harita tanımladıktan sonra, görsel deneyimi özelleştirmek istediğiniz ek görünümler ve kamera kontrolleri 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 gezi paylaştığınız haritayı oluşturmak için bir harita parçası veya görünümü ekleyerek harita tanımlarsınız. Haritanızı tanımlamak için aşağıdaki yöntemlerden birini uygulayın:
ConsumerMapFragment
: HaritanızıFragment
ile tanımlamak için kullanın.ConsumerMapView
:View
içeren bir harita tanımlamak için kullanın.
Özellikler her iki yöntem için de aynıdır. Bu nedenle, uygulamanız için en uygun yöntemi seçin.
Her iki yöntem de aşağıdaki bölümde daha ayrıntılı şekilde açıklanmıştır.
Harita fragmanı veya görünümü ekleme
Android fragmanı veya görünüm kullanarak seyahat 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.Ardından, uygulamanızın erişip değiştirebileceği seyahat haritasına erişim sağlar. Harita,
ConsumerController
için bir de kullanıcı adı sağlar. Bu kullanıcı adı, uygulamanızın tüketici deneyimini kontrol etmesine ve özelleştirmesine olanak tanır.onCreate()
yönteminizdengetConsumerGoogleMapAsync(callback)
'u çağırın. Bu yöntem, geri çağırma işlevindeConsumerGoogleMap
değerini ayarsız olarak döndürür.Gezi ilerleme durumunu görüntülemek ve gerektiğinde güncellemek için
ConsumerGoogleMap
simgesini kullanın.
ConsumerMapFragment
simgesini 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()
'e telefon edin.
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
simgesini ekleme örneği
Görünümü, XML dosyanızda tanımlandığı şekilde bir fragmanda 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()
'dangetConsumerGoogleMapAsync()
'yi arayın. Geri çağırma parametresine ek olarak aşağıdaki ayrıntıları ekleyin:İçerdiği etkinlik veya parça. Etkinlik veya parça temel sınıfı, yaşam döngüsüne erişim sağladığı için sırasıyla bir
FragmentActivity
veya destekFragment
olmalıdır.MapView
iç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 fragment'teki MapView
, bir etkinlikteki MapView
için önceki örnekle aynıdır. Bunun tek farkı, fragment'in onCreateView()
yöntemindeki MapView
öğesini içeren düzeni ş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 ana katmanı ve görüntüleme denetleyicisi desteği ekleyin
Uygulamanızda yolculuk ilerleme durumunu paylaşmak için uygulamanıza şu sınıfları ekleyin: ConsumerGoogleMap
ve ConsumerController
.
ConsumerMapFragment
veyaConsumerMapView
'denConsumerGoogleMap
alın. Her ikisi deConsumerMapReadyCallback
'daConsumerGoogleMap
değerini eşzamansız olarak döndürür.ConsumerGoogleMap
,GoogleMap
sınıfı için bir sarmalayıcı sınıftır. Uygulamanızın harita ile etkileşime geçebilmesi içinGoogleMap
ile 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,GoogleMap
yalnızca tek bir geri arama kaydına izin verir ancakConsumerGoogleMap
çift kayıtlı geri aramaları destekler. Bu geri çağırmalar, uygulamanızın sırayla çağrılan geri çağırmaları kaydetmesine olanak tanır.getConsumerController()
'deConsumerGoogleMap
'danConsumerController
'i alın.ConsumerController
, gezileri izleme, gezi durumunu kontrol etme ve konum 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 desteği ekleyin
Uygulama tasarımınız vektör grafikleri desteği gerektiriyorsa aşağıdaki adımları uygulayarak Android cihazlar ve vektör çizilebilir öğeler için destek ekleyin:
- Aşağıdaki kodu etkinliğinize ekleyin. Bu kodlar,
AppCompatActivity
'ü Tüketici SDK'sında Vektör çizilebilir öğelerini kullanacak şekilde genişletir.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}