소비자 앱에서 여행을 팔로우하려면 먼저 필요한 경우 벡터 지도에 대한 지원을 추가합니다.
앱에서 지도를 설정하려면 다음 단계를 따르세요.
- 여정 공유를 위한 지도 프래그먼트를 정의합니다.
- 지도 기본 레이어 및 뷰 컨트롤러에 대한 지원을 추가합니다.
- 벡터를 표시하도록 Android 벡터 그래픽 지원 추가 사용할 수 있습니다.
지도를 정의한 후 뷰와 카메라를 추가할 수 있습니다. 컨트롤을 만들 수 있습니다. 자세한 내용은 지도 스타일 지정을 참조하세요.
1단계: 여정 공유를 위한 지도 프래그먼트 정의
지도 조각 또는 보기를 추가하여 지도를 정의하려면 소비자 앱에서 주문형 여행을 공유합니다. 지도를 정의하려면 다음 방법 중 하나를 따릅니다.
두 방법 모두 특성이 동일하므로 사용할 방법을 선택하세요. 애플리케이션에 더 적합합니다
두 방법 모두 다음 섹션에서 더 자세히 설명합니다.
지도 조각 또는 보기 추가
다음 중 하나를 사용하여 이동 상황을 표시하는 지도를 만들려면 프래그먼트나 뷰를 포함하려면 다음 단계를 따르고 코드 예제를 참조하세요.
다음 위치에 있는 애플리케이션 레이아웃 XML 파일에서 프래그먼트나 뷰를 정의합니다.
/res/layout
다음을 사용하여 여정 공유 지도를 프래그먼트로 정의합니다.ConsumerMapFragment
또는ConsumerMapView
를 사용하여 뷰로 만듭니다.그러면 프래그먼트 또는 뷰가 여정에 대한 액세스를 제공합니다. 공유 지도를 만들 수 있습니다. 또한 지도는
ConsumerController
에 대한 핸들을 추가하여 앱에서 사용자 여정 공유 환경을 맞춤설정할 수 있습니다onCreate()
메서드에서getConsumerGoogleMapAsync(callback)
를 호출합니다. 이 메서드는 콜백에서ConsumerGoogleMap
를 비동기식으로 반환합니다.ConsumerGoogleMap
를 사용하여 이동 상황을 표시하고 필요에 따라 업데이트합니다.
ConsumerMapFragment
추가 방법 예
다음에 표시된 대로 애플리케이션 레이아웃 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" />
onCreate()
에서getConsumerGoogleMapAsync()
에 전화 걸기 메서드를 사용하여 축소하도록 요청합니다.
자바
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
추가 방법 예
다음에 정의된 대로 프래그먼트 또는 활동에서 뷰를 사용합니다. 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" />
onCreate()
에서getConsumerGoogleMapAsync()
를 호출합니다. 포함 콜백 매개변수 외에 다음 세부정보를 포함합니다.포함하는 활동 또는 프래그먼트 활동 또는 프래그먼트 기본 클래스는
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);
}
}
}
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,
)
}
}
프래그먼트의 MapView
은
활동 내 MapView
(프래그먼트가 실행 중인 레이아웃을 확장하는 경우 제외)
프래그먼트 onCreateView()
메서드에 MapView
가 포함되어 있어야 합니다.
자바
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단계: 지도 기본 레이어 및 뷰 컨트롤러 지원 추가
앱에서 여정 공유를 사용 설정하려면 다음을 추가하세요.
ConsumerGoogleMap
및 ConsumerController
클래스를 앱에 추가합니다.
ConsumerGoogleMap
ConsumerMapFragment
또는ConsumerMapView
는 둘 다 비동기식으로 반환됩니다.ConsumerMapReadyCallback
의ConsumerGoogleMap
입니다.ConsumerGoogleMap
는GoogleMap
클래스의 래퍼 클래스입니다. 그것은GoogleMap
와 동일한 API로, 앱이 지도와 상호작용할 수 있습니다. 이렇게 하면 앱이 동일한 기본 Google Cloud 콘솔과 있습니다. 예를 들어GoogleMap
는 단일 콜백 등록만 허용하지만ConsumerGoogleMap
는 이중 등록된 콜백을 지원합니다. 이러한 콜백을 통해 앱은 순차적으로 호출되는 콜백을 등록합니다.getConsumerController()
의ConsumerGoogleMap
에서ConsumerController
을(를) 받습니다.ConsumerController
앱을 통해 다음과 같은 여정 공유 기능을 이용할 수 있습니다. 이동 상황을 모니터링하고, 이동 상태를 제어하고, 위치를 설정할 수 있습니다.
다음에서 앱에 ConsumerGoogleMap
및 ConsumerController
를 추가하는 방법
다음 예를 참고하세요.
자바
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단계: Android 벡터 그래픽 지원 추가
앱 디자인에서 벡터 그래픽에 대한 지원이 필요한 경우 Android 기기와 벡터 드로어블을 만들려면 다음 단계를 따르세요.
- 다음 코드를 활동에 추가합니다. 이 코드는
AppCompatActivity
: Consumer SDK에서 벡터 드로어블을 사용합니다.
자바
// ...
import android.support.v7.app.AppCompatActivity;
// ...
public class ConsumerTestActivity extends AppCompatActivity {
// ...
}
Kotlin
// ...
import android.support.v7.app.AppCompatActivity
// ...
class ConsumerTestActivity : AppCompatActivity() {
// ...
}