2016-08-23 1 views
3

У меня есть MKMapView в окне, и pitchEnabled истинно (и я подтвердил это в отладчике). «3D» вещь в середине компаса выделена серым цветом, а щелчок или перетаскивание ничего не делает. Опция-перетаскивание карты (например, я делаю в Maps.app) тоже ничего не делает.Как включить просмотр MKMapView 3D?

Из моей интерпретации документов установка pitchEnabled должна позволить мне использовать 3D-вид, например Maps.app. Я ошибаюсь? Есть ли что-то еще, что мне нужно сделать, чтобы мои пользователи могли получить 3D-карту?

+0

У вашего объекта MKMapView есть камера (свойство)? – rocky

+0

@rocky: 'camera' - свойство с нулевым значением, поэтому он не может * не иметь его. (Я подтвердил в отладчике, что у него есть.) Нужно ли мне устанавливать его на что-нибудь, в частности, чтобы пользователь мог управлять полем? –

+0

Ну, я читал документацию для pitchEnabled, и он говорит: «Когда это свойство установлено в YES, а действительная камера связана с картой ...». Итак, вопрос в том, что такое действительная камера? – rocky

ответ

4

Вы можете приблизиться к опыту 3D-режима, отрегулировав угол камеры, с которого вы просматриваете карту и делаете здания видимыми. В приведенном ниже примере позволяет просматривать Эйфелеву башню в 3D:

viewDidLoad() { 
    super.viewDidLoad() 

    mapView.mapType = MKMapType.Standard 
    mapView.showsBuildings = true // displays buildings 

    let eiffelTowerCoordinates = CLLocationCoordinate2DMake(48.85815, 2.29452) 
    mapView.region = MKCoordinateRegionMakeWithDistance(eiffelTowerCoordinates, 1000, 100) // sets the visible region of the map 

    // create a 3D Camera 
    let mapCamera = MKMapCamera() 
    mapCamera.centerCoordinate = eiffelTowerCoordinates 
    mapCamera.pitch = 45 
    mapCamera.altitude = 500 // example altitude 
    mapCamera.heading = 45 

    // set the camera property 
    mapView.camera = mapCamera 
} 

пример из: this question

0

Поскольку OS X El Capitan v10.11 они добавили новый тип карты: "Режим 3D эстакаду"

По какой-то причине этот параметр не отображается в инспекторе атрибутов XCode в mapview. Вы должны установить его программным путем. Это заставляет карту выглядеть и вести себя так же, как в приложении карт.

self.mapView.mapType = MKMapTypeSatelliteFlyover; 
0

Я был в состоянии сделать это в стриже на прошивке 11:

mapView.mapType = .hybridFlyover 

Это дает мне 3D вид.