Масштабирование и прокрутка карты

Требования к операционной системе: iOS 5.0 и выше.

Мобильное устройство: iPad.

Описание

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

Исходный код

Для выполнения примера необходимо взамен содержимого метода mapChart:touchDownInShape: класса ViewController (см. раздел «Создание карты с временной шкалой») разместить следующий код:

// Получаем видимую область карты
CGRect visibleRect = [mapChart visibleRect];
NSLog(@"Старые координаты верхнего левого угла видимой области: (%f, %f)",
    visibleRect.origin.x,
    visibleRect.origin.y);
/* Изменяем масштаб и выполняем прокрутку 
для отображения указанной области слоя карты */
[mapChart zoomToShape: shape];
// Отображаем подсказку для области слоя карты
[m_view showPopupInShape: shape];
// Получаем видимую область карты
visibleRect = [mapChart visibleRect];
NSLog(@"Новые координаты верхнего левого угла видимой области: (%f, %f)",
    visibleRect.origin.x,
    visibleRect.origin.y);
NSLog(@"Коэффициент масштабирования: %f", [mapChart zoom]);

Затем вручную нажмём на область слоя карты с идентификатором «RU». В результате этого будет изменён масштаб и выполнена прокрутка к данной области, а также для нее будет отображена всплывающая подсказка:

В консоли среды разработки будут выведены старые и новые координаты верхнего левого угла видимой области, а также коэффициент масштабирования:

Старые координаты верхнего левого угла видимой области: (0.000000, -241.210678)

Новые координаты верхнего левого угла видимой области: (506.336517, -88.003075)

Коэффициент масштабирования: 0.784064

Аналогичный результат (за исключением вывода информации в консоль среды разработки) получим, если выполним следующий код:

// Получаем координаты и размеры области слоя карты
CGRect shapeRect = [shape bounds];
/* Изменяем масштаб и выполняем прокрутку
для отображения указанной области слоя карты без воспроизведения анимации */
[mapChart zoomToRect:shapeRect];
// Перерисовываем область слоя карты
[mapChart invalidateRect:shapeRect];
// Отображаем подсказку для области слоя карты
[mapChart showPopupInShape:shape];

То же самое, но с воспроизведением анимации масштабирования и прокрутки карты, получим, выполнив следующий сценарий:

// Получаем координаты и размеры области слоя карты
CGRect shapeRect = [shape bounds];
/* Изменяем масштаб и выполняем прокрутку
для отображения указанной области слоя карты с воспроизведением анимации */
[mapChart zoomToRect:shapeRect animated:YES];
// Перерисовываем область слоя карты
[mapChart invalidateRect:shapeRect];
// Отображаем подсказку для области слоя карты
[mapChart showPopupInShape:shape];

См. также:

Примеры использования компонентов