Настроить карту

Выберите платформу: Android iOS

Чтобы отслеживать поездку в вашем потребительском приложении, вам сначала нужно определить карту и добавить поддержку векторных карт, если это необходимо.

Чтобы настроить карту в приложении, выполните следующие действия:

  1. Определите фрагмент карты для отслеживания поездки .
  2. Добавить поддержку базового слоя карт и контроллера представлений .
  3. При необходимости добавьте поддержку векторной графики Android для отображения векторных карт.

После того, как вы определили карту, вы можете добавить дополнительные виды и элементы управления камерой, которые вы хотите настроить для визуального опыта. Для получения более подробной информации см. Стиль карты .

Шаг 1: Определите фрагмент карты для отслеживания поездки

Вы определяете карту, добавляя фрагмент карты или вид, чтобы создать карту, на которой вы делитесь поездкой по запросу в своем потребительском приложении. Чтобы определить карту, следуйте одному из этих методов:

  • ConsumerMapFragment : используется для определения карты с помощью Fragment .

  • ConsumerMapView : используется для определения карты с помощью View .

Возможности обоих методов одинаковы, поэтому выбирайте тот, который лучше подходит для вашего случая.

Оба метода более подробно описаны в следующем разделе.

Добавить фрагмент карты или вид

Чтобы создать карту для отображения хода поездки с использованием фрагмента или представления Android, выполните следующие действия и обратитесь к примерам кода.

  1. Определите фрагмент или представление в XML-файле макета вашего приложения, расположенном в /res/layout . Определите карту поездки либо как фрагмент с помощью ConsumerMapFragment , либо как представление с помощью ConsumerMapView .

    Затем фрагмент или представление предоставляет доступ к карте поездки, к которой ваше приложение может получить доступ и изменить ее. Карта также предоставляет дескриптор для ConsumerController , который позволяет вашему приложению контролировать и настраивать потребительский опыт.

  2. Из метода onCreate() вызовите getConsumerGoogleMapAsync(callback) , который асинхронно возвращает ConsumerGoogleMap в обратном вызове.

  3. Используйте ConsumerGoogleMap для отображения хода поездки и обновления по мере необходимости.

Пример добавления ConsumerMapFragment

  1. Определите фрагмент в XML-файле макета вашего приложения, как показано в следующем примере кода.

    <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" />
    
  2. Вызовите getConsumerGoogleMapAsync() из метода onCreate() .

Ява

 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();
             }
           });
     }
   }

 }

Котлин

 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

  1. Используйте представление либо во фрагменте, либо в действии, как определено в вашем 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" />
    
  2. Сделайте вызов getConsumerGoogleMapAsync() из onCreate() . В дополнение к параметру обратного вызова включите следующие данные:

    • Содержащая активность или фрагмент. Базовый класс активности или фрагмента должен быть либо FragmentActivity , либо вспомогательным Fragment (соответственно), поскольку они предоставляют доступ к его жизненному циклу.

    • GoogleMapOptions (может иметь значение null), содержащий атрибуты конфигурации для MapView .

Ява

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);
    }
  }

}

Котлин

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,
    )
  }
}

MapView во фрагменте аналогичен предыдущему примеру для MapView в действии, за исключением того, что фрагмент расширяет макет, включающий MapView в методе фрагмента onCreateView() .

Ява

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);
  }

}

Котлин

class MapViewInFragment : Fragment() {
  override fun onCreateView(
    layoutInflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?,
  ): View {
    return layoutInflater.inflate(R.layout.consumer_map_view, viewGroup, false)
  }
}

Шаг 2: Добавьте поддержку базового слоя карт и контроллера представления

Чтобы поделиться ходом поездки в своем приложении, добавьте в него следующие классы: ConsumerGoogleMap и ConsumerController .

  • Получите ConsumerGoogleMap из ConsumerMapFragment или ConsumerMapView , оба из которых асинхронно возвращают ConsumerGoogleMap в ConsumerMapReadyCallback .

    ConsumerGoogleMap — это класс-оболочка для класса GoogleMap . Он использует эквивалент API GoogleMap , чтобы ваше приложение могло взаимодействовать с картой. Таким образом, ваше приложение может беспрепятственно взаимодействовать с той же базовой картой Google. Например, GoogleMap допускает только одну регистрацию обратного вызова, но ConsumerGoogleMap поддерживает двойные зарегистрированные обратные вызовы. Эти обратные вызовы позволяют вашему приложению регистрировать обратные вызовы, которые вызываются последовательно.

  • Получите ConsumerController из ConsumerGoogleMap в getConsumerController() .

    ConsumerController предоставляет доступ к функциям совместного использования поездок, таким как мониторинг поездок, управление статусом поездок и установка местоположений.

О том, как добавить ConsumerGoogleMap и ConsumerController в ваше приложение на Java и Kotlin, смотрите следующие примеры.

Ява

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);

Котлин

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: Добавьте поддержку векторной графики Android

Если дизайн вашего приложения требует поддержки векторной графики, добавьте поддержку устройств Android и векторных изображений, выполнив следующие действия:

  1. Добавьте следующий код в Activity. Этот код расширяет AppCompatActivity для использования векторных рисунков в Consumer SDK.

Ява

// ...
import android.support.v7.app.AppCompatActivity;

// ...

public class ConsumerTestActivity extends AppCompatActivity {
  // ...
}

Котлин

// ...
import android.support.v7.app.AppCompatActivity

// ...

class ConsumerTestActivity : AppCompatActivity() {
  // ...
}

Что дальше?

Следите за путешествием на Android

Оформить карту