Как включить уровень пола MapKit? - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь показать уровень пола в моем приложении для Apple.Я знаю, что на карте Apple есть несколько мест, таких как аэропорт или торговый центр, где можно увидеть этот этаж.Мне нужно добиться именно этого.Просто нужно показать уровень пола, где это доступно.Как вы можете видеть на картинке, в правой части изображения есть 5F, 4F, 3F, 2F и т. Д. Я искал в сети, но пока ничего не понял.

enter image description here

1 Ответ

0 голосов
/ 12 февраля 2019

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

Вот пример для создания наложения:

import MapKit

class MapOverlay: NSObject, MKOverlay {
  var coordinate: CLLocationCoordinate2D
  var boundingMapRect: MKMapRect

  override init() {
    let location = CLLocationCoordinate2D(latitude: 75.3307, longitude: -152.1929) // change these for the position of your overlay
    let mapSize = MKMapSize(width: 240000000, height: 200000000) // change these numbers for the width and height of your image
    boundingMapRect = MKMapRect(origin: MKMapPoint(location), size: mapSize)
    coordinate = location
    super.init()
  }
}

class MapOverlayRenderer: MKOverlayRenderer {
  let overlayImage: UIImage
  init(overlay: MKOverlay, image: UIImage) {
    self.overlayImage = image
    super.init(overlay: overlay)
  }

  override func draw(_ mapRect: MKMapRect, zoomScale: MKZoomScale, in context: CGContext) {
    guard let imageReference = overlayImage.cgImage else { return }

    let rect = self.rect(for: overlay.boundingMapRect)
    context.scaleBy(x: 1.0, y: -1.0)
    context.translateBy(x: 0.0, y: -rect.size.height)
    context.draw(imageReference, in: rect)
  }
}

Затем добавьте егона вашу карту:

let mapOverlay = MapOverlay()
mapView.addOverlay(mapOverlay)

И не забудьте о делегате:

mapView.delegate = self

extension ViewController: MKMapViewDelegate {
  func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    return MapOverlayRenderer(overlay: overlay, image: UIImage(named: "overlayImage")!)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...