MapKit Дисплей iPhone для управления масштабированием - PullRequest
1 голос
/ 13 декабря 2011

Можно ли с помощью MapKit показать карту в iPhone, как я это делаю, чтобы отобразить элементы управления масштабированием на карте?

Если нет, то какие флаги или методы следует использовать для увеличения иУменьшите масштаб, чтобы я мог создавать методы, которые будут делать это одним нажатием кнопки.

Ответы [ 4 ]

7 голосов
/ 13 декабря 2011

Для него нет встроенных элементов управления.

Пара предложений:

  1. Вы можете предварительно определить некоторые пролеты и сохранить их где-нибудь в массиве, а затем сохранить свою позицию в этом массиве.Увеличение / уменьшение изменяет положение и получает диапазон.
  2. Увеличение принимает текущий диапазон и делится на 2, уменьшение умножается на 2.

Вы изменяете диапазон вобласть mapView.Таким образом, вы должны:

  • Получить область mapView.
  • Получить область региона.
  • Изменить диапазон на то, что вы хотите.
  • Установите диапазон регионов для нового диапазона.
  • Установите регион mapView для нового региона.

Вот некоторый код для предложения 2:

MKCoordinateRegion region = mapView.region;
MKCoordinateSpan span;
span.latitudeDelta = region.span.latitudeDelta*2;
span.longitudeDelta = region.span.longitudeDelta*2;
region.span = span;
[mapView setRegion:region animated:TRUE];
1 голос
/ 13 декабря 2011

Я не думаю, что вы должны это делать, ожидаемый способ увеличения и уменьшения масштаба - это использование жестов повышения.Однако, если вы все еще хотите пойти дальше и сделать это, вам следует расположить кнопки над MKMapView, а затем с помощью них изменить свойство region MKMapView

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

Для Swift 4 вот что я использую:

func zoom(_ zoomin : Bool) {
    var region = mapView.region;
    var span = MKCoordinateSpan();
    span.latitudeDelta = zoomin ? region.span.latitudeDelta / 2 :  region.span.latitudeDelta * 2;
    span.longitudeDelta = zoomin ? region.span.longitudeDelta / 2 : region.span.longitudeDelta * 2;
    region.span = span;

    mapView.setRegion(region, animated: true);
}
0 голосов
/ 13 декабря 2011

С макушки головы я не помню (при работе с окном), есть ли переключатель для отображения элементов управления масштабированием.Я предполагаю, что вы говорите об отображении уровня масштабирования, потому что по умолчанию вы можете сжимать / расширять представление для масштабирования.

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

Все эти функции описаны в документации по mapkit.Просто выполните поиск MapKit в центре документации.

Редактировать: http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKMapView_Class/MKMapView/MKMapView.html#//apple_ref/doc/uid/TP40008205

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

Таким образом, вы можете подписаться на функцию делегата regionWillChange и использовать объект mapView для получения уровня масштабирования, а затем соответствующим образом установить графику.

...