iOS SDK에서 맵과 상호 작용(미리 보기)
이 문서에서는 맵 이벤트 관리자를 사용하는 방법을 보여 줍니다.
참고 항목
Azure Maps iOS SDK 사용 중지
이제 iOS용 Azure Maps 네이티브 SDK는 더 이상 사용되지 않으며 2025년 3월 31일에 사용 중지됩니다. 서비스 중단을 방지하려면 2025년 3월 31일까지 Azure Maps 웹 SDK로 마이그레이션합니다. 자세한 내용은 Azure Maps iOS SDK 마이그레이션 가이드를 참조하세요.
맵과 상호 작용
맵은 AzureMapDelegate
프로토콜을 준수하는 대리자를 수락하는 events
속성을 통해 모든 이벤트를 관리합니다. 다음 표에서는 AzureMapDelegate
프로토콜의 메서드로 표시되는 모든 지원되는 맵 이벤트를 나열합니다.
메서드 | 설명 |
---|---|
azureMapCameraIsIdle(_ map: AzureMap) |
맵이 “유휴” 상태가 되기 전에 렌더링된 마지막 프레임 후에 발생합니다.
|
azureMapCameraIsMoving(_ map: AzureMap) |
한 보기에서 다른 보기로 애니메이션 전환 중에 반복적으로 발생합니다. 이는 사용자 상호 작용 또는 메서드의 결과일 수 있습니다. |
azureMapCameraMoveWasCanceled(_ map: AzureMap) |
카메라에 대한 이동 요청을 취소할 때 발생합니다. |
azureMap(_ map: AzureMap, cameraMoveIsStarted reason: CameraChangeReason) |
지도가 한 보기에서 다른 보기로 전환되기 직전에 발생합니다. 이는 프로그래밍 방식으로 또는 사용자 상호 작용의 결과로 발생할 수 있습니다. reason 매개 변수는 카메라 이동이 시작된 방법에 대한 세부 정보를 제공하는 옵션 집합입니다. 다음 목록에서는 가능한 이유를 간략하게 설명합니다.
|
azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) |
맵의 동일한 지점에서 맵을 눌렀다가 놓으면 발생합니다. |
azureMap(_ map: AzureMap, didTapOn features: [Feature]) |
기능의 동일한 지점에서 맵을 눌렀다가 놓으면 발생합니다. |
azureMap(_ map: AzureMap, didAddLayer layer: Layer) |
레이어가 맵에 추가되면 발생합니다. |
azureMap(_ map: AzureMap, didRemoveLayer layer: Layer) |
맵에서 레이어가 제거되면 발생합니다. |
azureMapWillLoad(_ map: AzureMap) |
렌더링에 필요한 리소스를 다운로드하기 전에 발생합니다. |
azureMapDidLoad(_ map: AzureMap) |
리소스가 다운로드되고 맵의 첫 번째 시각적 렌더링이 완료된 후에 발생합니다. |
azureMap(_ map: AzureMap, didLongPressAt location: CLLocationCoordinate2D) |
맵을 누르고 잠시 동안 기다린 다음 지도의 동일한 지점에서 놓을 때 발생합니다. |
azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) |
맵을 누르고 잠시 동안 기다린 다음 기능의 동일한 지점에서 놓을 때 발생합니다. |
azureMapIsReady(_ map: AzureMap) |
다음과 같은 조건이 충족된 경우 발생합니다.
|
azureMap(_ map: AzureMap, didAddSource source: Source) |
DataSource 또는 VectorTileSource 가 맵에 추가될 때 발생합니다. |
azureMap(_ map: AzureMap, didRemoveSource source: Source) |
맵에서 DataSource 또는 VectorTileSource 가 제거될 때 발생합니다. |
azureMapStyleDidChange(_ map: AzureMap) |
맵의 스타일이 로드되거나 변경될 때 발생합니다. |
다음 코드에서는 azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D)
, azureMap(_ map: AzureMap, didTapOn features: [Feature])
및 azureMapCameraIsMoving(_ map: AzureMap)
이벤트를 맵에 추가하는 방법을 보여 줍니다.
class ShowSimpleEventsHandlingViewController: UIViewController, AzureMapDelegate {
// Other Setup...
func setupMapControl() {
mapControl.onReady { map in
// Add the delegate to the map to respond to events.
map.events.addDelegate(self)
}
}
func azureMap(_ map: AzureMap, didTapAt location: CLLocationCoordinate2D) {
// Map clicked.
}
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
// Feature clicked.
}
func azureMapCameraIsMoving(_ map: AzureMap) {
// Map camera moved.
}
}
자세한 내용은 맵 및 트리거 이벤트와 상호 작용하는 방법에 대한 맵 탐색 문서를 참조하세요.
계층에 대한 기능 이벤트 범위
맵에 대리자를 추가할 때 계층 ID를 두 번째 매개 변수로 전달할 수 있습니다. 계층이 전달될 때 해당 계층에서 이벤트가 발생하는 경우에만 이벤트가 시작됩니다. 계층으로 범위가 지정된 이벤트는 기호, 거품형, 선형 및 다각형 계층이 지원됩니다.
class ShowScopedEventsHandlingViewController: UIViewController, AzureMapDelegate {
// Other Setup...
func setupMapControl() {
mapControl.onReady { map in
// Create a data source.
let source = DataSource()
map.sources.add(source)
// Add data to the data source.
source.add(geometry: Point(CLLocationCoordinate2D(latitude: 0, longitude: 0)))
// Create a layer and add it to the map.
let layer = BubbleLayer(source: source)
map.layers.addLayer(layer)
// Add the delegate to the map to respond to events.
map.events.addDelegate(self, for: [layer.id])
}
}
func azureMap(_ map: AzureMap, didTapOn features: [Feature]) {
// One or more features tapped.
}
func azureMap(_ map: AzureMap, didLongPressOn features: [Feature]) {
// One or more features long pressed.
}
}
추가 정보
전체 코드 예제는 다음 문서를 참조하세요.