Pour suivre un trajet dans votre application grand public, vous devez d'abord définir une carte et ajouter la prise en charge des cartes vectorielles, si nécessaire.
Pour configurer une carte dans votre application, procédez comme suit:
- Définissez un fragment de carte pour le partage de parcours.
- Ajoutez la prise en charge d'un calque de base de cartes et d'un contrôleur de vue.
- Ajouter la prise en charge des graphiques vectoriels Android pour l'affichage vectoriel Google Maps, si nécessaire.
Après avoir défini une carte, vous pouvez ajouter des vues et des caméras vous souhaitez personnaliser l'expérience visuelle. Pour en savoir plus, consultez Appliquer un style à la carte.
Étape 1: Définissez un fragment de carte pour le partage de parcours
Vous définissez une carte en ajoutant un fragment ou une vue pour créer la carte où vous partagez un trajet à la demande dans votre application grand public. Pour définir votre carte, suivez l'une des méthodes suivantes:
ConsumerMapFragment
: permet de définir votre carte à l'aide d'unFragment
ConsumerMapView
: permet de définir une carte avec uneView
Les caractéristiques sont identiques quelle que soit la méthode. est mieux adapté à votre application.
Ces deux méthodes sont expliquées plus en détail dans la section suivante.
Ajouter un fragment ou une vue de carte
Pour créer une carte afin d'afficher la progression du trajet en utilisant : un fragment ou une vue Android, suivez ces étapes et reportez-vous à la exemples de code.
Définissez un fragment ou une vue dans le fichier XML de mise en page de votre application situé dans
/res/layout
Définissez la carte de partage du parcours comme un fragment à l'aide deConsumerMapFragment
, ou en tant que vue à l'aide deConsumerMapView
.Le fragment ou la vue permet ensuite d'accéder au parcours. partager une carte à laquelle votre application peut accéder et la modifier. La carte fournit également vers
ConsumerController
, ce qui permet à votre application de contrôler personnaliser l'expérience de partage du parcours.À partir de votre méthode
onCreate()
, appelezgetConsumerGoogleMapAsync(callback)
. qui renvoieConsumerGoogleMap
de manière asynchrone dans le rappel.Utilisez le
ConsumerGoogleMap
pour afficher la progression du trajet et le mettre à jour si nécessaire.
Exemple d'ajout de ConsumerMapFragment
Définissez le fragment dans le fichier XML de mise en page de votre application, comme indiqué dans l'exemple de code suivant.
<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" />
Appelez
getConsumerGoogleMapAsync()
depuis leonCreate()
.
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()!!
}
}
)
}
}
Exemple d'ajout de ConsumerMapView
Utilisez la vue dans un fragment ou dans une activité, comme défini dans votre 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" />
Appelez
getConsumerGoogleMapAsync()
depuisonCreate()
. Dans en plus du paramètre de rappel, incluez les informations suivantes:L'activité ou le fragment conteneur. Base de l'activité ou du fragment La classe doit être une
FragmentActivity
ou uneFragment
prise en charge. (respectivement), puisqu'elles donnent accès à son cycle de vie.GoogleMapOptions
(qui peut être nulle), contenant la configuration pourMapView
.
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,
)
}
}
Une MapView
dans un fragment est la même que dans l'exemple précédent pour
MapView
dans une activité, sauf que le fragment gonfle la mise en page qui
inclut MapView
dans la méthode onCreateView()
du fragment.
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)
}
}
Étape 2: Ajoutez la prise en charge d'un calque de base Maps et d'un contrôleur de vue
Pour activer le partage de parcours dans votre appli, ajoutez le
les classes suivantes à votre application: ConsumerGoogleMap
et ConsumerController
.
Obtenez
ConsumerGoogleMap
auprès deConsumerMapFragment
ouConsumerMapView
, qui renvoient tous deux de manière asynchroneConsumerGoogleMap
dansConsumerMapReadyCallback
.ConsumerGoogleMap
est une classe wrapper pour la classeGoogleMap
. Elle utilise API équivalente àGoogleMap
pour que votre application puisse interagir avec la carte. De cette façon, votre application peut interagir facilement avec le même sur la carte. Par exemple,GoogleMap
n'autorise qu'un seul enregistrement de rappel, maisConsumerGoogleMap
est compatible avec les rappels à double enregistrement. Ces rappels permettent votre application enregistre des rappels appelés de manière séquentielle.Obtenez
ConsumerController
deConsumerGoogleMap
dansgetConsumerController()
.ConsumerController
permet d'accéder à des fonctionnalités de partage de parcours telles que de surveiller les trajets, de contrôler l'état des trajets et de définir les lieux.
Pour savoir comment ajouter ConsumerGoogleMap
et ConsumerController
à votre application dans
Java et Kotlin, consultez les exemples suivants.
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,
}
)
Étape 3: Ajoutez la prise en charge des graphiques vectoriels Android
Si la conception de votre application nécessite la prise en charge des graphiques vectoriels, ajoutez la prise en charge de Pour les appareils Android et les drawables vectoriels, procédez comme suit:
- Ajoutez le code suivant à votre activité. Ce code étend
AppCompatActivity
pour utiliser les drawables vectoriels dans le SDK grand public.
Java
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}
Étape suivante
Suivre un trajet dans Android Appliquer un style à une carte