Aby śledzić podróż w aplikacji dla klientów, musisz najpierw określić mapę, a w razie potrzeby dodać obsługę map wektorowych.
Aby skonfigurować mapę w aplikacji:
- Definiowanie fragmentu mapy na potrzeby udostępniania podróży
- Dodano obsługę warstwy podstawowej map i kontrolera widoku
- Dodanie obsługi grafiki wektorowej na Androidzie do wyświetlania wektorów wektorowych map, w razie potrzeby.
Po zdefiniowaniu mapy możesz dodać kolejne widoki i kamery które chcesz dostosować do swoich potrzeb. Aby dowiedzieć się więcej, Więcej informacji: Określanie stylu mapy.
Krok 1. Zdefiniuj fragment mapy do udostępniania podróży
Mapę możesz zdefiniować, dodając fragment mapy lub widok, aby utworzyć mapę, udostępniasz podróż na żądanie w aplikacji dla klientów indywidualnych. Aby zdefiniować mapę: skorzystaj z jednej z tych metod:
ConsumerMapFragment
: służy do definiowania mapy za pomocąFragment
ConsumerMapView
: służy do definiowania mapy za pomocąView
W przypadku obu metod funkcje są takie same, więc wybierz metodę, która jest lepszy dla Twojej aplikacji.
Obie metody zostały szczegółowo wyjaśnione w następnej sekcji.
Dodawanie fragmentu lub widoku mapy
Aby utworzyć mapę wyświetlającą postęp podróży za pomocą fragmentu lub widoku Androida, wykonaj te czynności i zapoznaj się z z przykładami kodu.
Zdefiniuj fragment lub widok w pliku XML układu aplikacji znajdującym się w
/res/layout
Zdefiniuj mapę udostępniania podróży jako fragment za pomocą atrybutuConsumerMapFragment
lub jako widok przy użyciuConsumerMapView
.Następnie fragment lub widok zapewnia dostęp do podróży. udostępnianie mapy, którą aplikacja może przeglądać i modyfikować. Mapa zapewnia też dostęp do funkcji do interfejsu
ConsumerController
, który umożliwia aplikacji kontrolowanie dostosować środowisko udostępniania.Za pomocą metody
onCreate()
wywołajgetConsumerGoogleMapAsync(callback)
, , które asynchronicznie zwracaConsumerGoogleMap
w wywołaniu zwrotnym.Aby wyświetlać postępy w podróży i w razie potrzeby je aktualizować, używaj aplikacji
ConsumerGoogleMap
.
Przykład dodania: ConsumerMapFragment
Zdefiniuj fragment w pliku XML układu aplikacji, jak widać w ten przykładowy kod.
<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" />
Zadzwoń pod numer
getConsumerGoogleMapAsync()
z:onCreate()
.
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()!!
}
}
)
}
}
Przykład dodania: ConsumerMapView
Korzystaj z widoku we fragmencie lub w aktywności, zgodnie z definicją XML.
<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" />
Zadzwoń pod numer
getConsumerGoogleMapAsync()
z numeruonCreate()
. W oprócz parametru wywołania zwrotnego podaj te informacje:Aktywność lub fragment, który go zawiera. Podstawa aktywności lub fragmentu klasa musi być typu
FragmentActivity
lub wsparciaFragment
ponieważ zapewniają dostęp do ich cyklu życia.GoogleMapOptions
(który może mieć wartość null), zawierający konfigurację dla:MapView
.
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,
)
}
}
Pozycja MapView
we fragmencie jest taka sama jak w poprzednim przykładzie dla
MapView
w aktywności, z tym że fragment nadwyższa układ, który
zawiera element MapView
we fragmencie onCreateView()
.
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)
}
}
Krok 2. Dodaj obsługę warstwy podstawowej map i kontrolera widoku
Aby włączyć udostępnianie podróży w aplikacji, dodaj atrybut
te zajęcia do Twojej aplikacji: ConsumerGoogleMap
i ConsumerController
.
Uzyskaj
ConsumerGoogleMap
zConsumerMapFragment
lubConsumerMapView
, które zwracają asynchronicznieConsumerGoogleMap
w:ConsumerMapReadyCallback
.ConsumerGoogleMap
to klasa kodu dla klasyGoogleMap
. Wykorzystuje Odpowiednik interfejsu API funkcjiGoogleMap
, który umożliwia aplikacji interakcję z mapą. Dzięki temu aplikacja może płynnie wchodzić w interakcję z tym samym mapy. Na przykładGoogleMap
umożliwia rejestrację tylko z jednym wywołaniem zwrotnym,ConsumerGoogleMap
obsługuje podwójne zarejestrowane wywołania zwrotne. Te wywołania zwrotne pozwalają aplikacja rejestruje wywołania zwrotne wywoływane sekwencyjnie.Uzyskaj
ConsumerController
od sprzedawcyConsumerGoogleMap
w aplikacjigetConsumerController()
.ConsumerController
umożliwia dostęp do funkcji udostępniania podróży, takich jak do monitorowania podróży, kontrolowania ich stanu i ustawiania lokalizacji.
Aby dowiedzieć się, jak dodać ConsumerGoogleMap
i ConsumerController
do aplikacji –
Java i Kotlin, zapoznaj się z poniższymi przykładami.
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,
}
)
Krok 3. Dodaj obsługę grafiki wektorowej Androida
Jeśli projektowana aplikacja wymaga obsługi grafiki wektorowej, dodaj obsługę Urządzenia z Androidem i elementy rysowane wektorowo, wykonując te czynności:
- Dodaj ten kod do swojej aktywności. Ten kod przedłuża się
AppCompatActivity
, aby użyć obiektów rysunkowych wektorowych w pakiecie SDK dla klientów indywidualnych.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}