MKOverlayView
Наследование
-
NSObject
-
UIResponder
-
UIView
-
MKOverlayView
-
MKOverlayPathView
-
NSObject
-
UIResponder
-
UIView
-
MKOverlayView
-
MKOverlayPathView
Соответствует
-
AnyObject
-
CVarArgType
-
Сопоставимый
-
Hashable
-
NSCoding
-
NSObjectProtocol
-
Печатаемый
-
Reflectable
-
UIAccessibilityIdentification
-
UIAppearance
-
UIAppearanceContainer
-
UICoordinateSpace
-
UIDynamicItem
-
UITraitEnvironment
-
NSCoding
-
NSObject
-
UIAppearance
-
UIAppearanceContainer
-
UICoordinateSpace
-
UIDynamicItem
-
UITraitEnvironment
Оператор импорта
Swift
import MapKit
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
MKOverlayView
класс определяет основное поведение, связанное со всеми представлениями наложения. Представление наложения обеспечивает визуальное представление объекта наложения — т.е. объект, соответствующий MKOverlay
протокол. Этот класс определяет инфраструктуру получения, используемую представлением карты, но не делает никакого фактического получения. Подклассы, как ожидают, переопределят drawMapRect:zoomScale:inContext:
метод для рисования содержания представления наложения.
Платформа Набора Карты обеспечивает несколько конкретных экземпляров представлений наложения. В частности это обеспечивает представления наложения для каждого из конкретных объектов наложения. Если Вы хотите нарисовать содержание наложения по-другому, можно использовать одно из этих существующих представлений наложения или определить собственный подкласс.
В iOS 7 и позже, используйте MKOverlayRenderer
класс для отображения оверлейных программ вместо этого.
Разделение на подклассы примечаний
Можно разделить на подклассы MKOverlayView
создать оверлейные программы на основе пользовательских форм и содержания. Единственные подклассы метода, как ожидают, переопределят, drawMapRect:zoomScale:inContext:
метод. Однако, если Ваш класс содержит содержание, которое может не быть готово к праву заимствования далеко, необходимо также переопределить canDrawMapRect:zoomScale:
метод и использование это для создания отчетов, когда класс готов и в состоянии нарисовать.
Реализация Вашего drawMapRect:zoomScale:inContext:
метод должно быть безопасно выполнить от многократных потоков одновременно. Для улучшения производительности представление карты может разместить рядом оверлейные программы, которые являются достаточно большими и распределяют рендеринг каждой мозаики для разделения потоков.
-
Инициализирует и возвращает представление наложения и связывает его с указанным объектом наложения.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (instancetype)initWithOverlay:(id<MKOverlay>)
overlay
Параметры
overlay
Объект наложения для использования при рисовании наложения на карте. Этот объект предоставляет данные, должен был нарисовать форму наложения. Этот объект сохраняется представлением наложения.
Возвращаемое значение
Инициализированный объект наложения.
Обсуждение
На инициализацию кадр представления наложения установлен в
CGRectZero
. Представление карты устанавливает размер и позицию представления во время дисплея, и Вы не должны изменять те значения сами.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
-
Объект наложения, содержащий данные для рисования. (только для чтения)
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
@property(nonatomic, readonly) id< MKOverlay > overlay
Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
-
- pointForMapPoint:
(iOS 7.0)Возвращает точку в представлении наложения, соответствующем указанной точке на карте.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (CGPoint)pointForMapPoint:(MKMapPoint)
mapPoint
Параметры
mapPoint
Точка на двумерной проекции карты. Если у Вас есть координатное значение (широта и долгота), можно использовать
MKMapPointForCoordinate
функционируйте для преобразования той координаты в точку карты.Возвращаемое значение
Точка в системе координат получателя, соответствующей точке карты.
Специальные замечания
Поскольку границы и прямоугольники кадра представления наложения не изменяются после того, как представление было создано, можно вызвать этот метод от многократных потоков одновременно. Поэтому можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- mapPointForPoint:
(iOS 7.0)Возвращает точку карты, соответствующую указанной точке в представлении наложения.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (MKMapPoint)mapPointForPoint:(CGPoint)
point
Параметры
point
Точка в системе координат представления, которую Вы хотите преобразовать.
Возвращаемое значение
Точка на двумерной проекции карты, соответствующей указанной точке.
Специальные замечания
Поскольку границы и прямоугольники кадра представления наложения не изменяются после того, как представление было создано, можно вызвать этот метод от многократных потоков одновременно. Поэтому можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- rectForMapRect:
(iOS 7.0)Возвращает прямоугольник в представлении наложения, соответствующем указанному прямоугольнику на карте.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Параметры
mapRect
Прямоугольник на двумерной проекции карты.
Возвращаемое значение
Прямоугольник указан в системе координат получателя.
Специальные замечания
Поскольку границы и прямоугольники кадра представления наложения не изменяются после того, как представление было создано, можно вызвать этот метод от многократных потоков одновременно. Поэтому можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- mapRectForRect:
(iOS 7.0)Возвращает прямоугольник карты, соответствующий прямоугольнику в системе координат представления наложения.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Параметры
rect
Прямоугольник указан в системе координат получателя.
Возвращаемое значение
Прямоугольник на двумерном проекте карты, соответствующем указанному прямоугольнику представления.
Специальные замечания
Поскольку границы и прямоугольники кадра представления наложения не изменяются после того, как представление было создано, можно вызвать этот метод от многократных потоков одновременно. Поэтому можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
См. также
-
- canDrawMapRect:zoomScale:
(iOS 7.0)Возвращает булево значение, указывающее, готово ли представление наложения нарисовать свое содержание.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (BOOL)canDrawMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
Параметры
mapRect
Прямоугольник карты, который должен быть обновлен.
zoomScale
Текущий масштабный коэффициент применился к карте.
Возвращаемое значение
YES
true
если это представление готово нарисовать свое содержание илиNO
false
если это не.Обсуждение
Представления наложения могут переопределить этот метод в ситуациях, где они могут зависеть от доступности другой информации для рисования их содержания. Например, представление наложения, показывающее информацию о трафике, могло бы хотеть задержать получение, пока это не имеет все данные трафика, в которых это нуждается. В таком случае это может возвратиться
NO
false
от этого метода, чтобы указать, что это не готово.Если Вы возвращаетесь
NO
false
от этого метода Ваше приложение ответственно за вызовsetNeedsDisplayInMapRect:zoomScale:
метод, когда представление наложения впоследствии становится готовым нарисовать его содержание.Реализация по умолчанию этого метода возвраты
YES
true
.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
-
- drawMapRect:zoomScale:inContext:
(iOS 7.0)Рисует содержание представления наложения.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (void)drawMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
inContext:(CGContextRef)context
Параметры
mapRect
Прямоугольник карты, который должен быть обновлен. Можно использовать этот прямоугольник для ограничения получения только частью изменившегося представления.
zoomScale
Текущий масштабный коэффициент применился к содержанию карты. Можно использовать это значение для конфигурирования штриховой ширины строк или других атрибутов, которые могли бы быть затронуты масштабом содержания представления.
context
Графический контекст для использования для рисования содержания представления.
Обсуждение
Реализация по умолчанию этого метода ничего не делает. Подклассы, как ожидают, переопределят этот метод (вместо
drawRect:
метод) и использование это для рисования содержания представления.В Вашем коде для прорисовки необходимо указать позицию любого представленного содержания относительно самой карты а не относительно границ или кадра представления. Другими словами, вычислите позицию и размер любого содержания наложения, использующего точки карты и прямоугольники карты, преобразуйте те значения в
CGPoint
иCGRect
типы (использующий методы этого класса), и затем используют преобразованные точки, чтобы создать пути или указать расположение рендеринга для элементов.Вы не должны также делать предположения, что кадр представления соответствует ограничительный прямоугольник наложения. Кадр представления фактически больше, чем ограничительный прямоугольник, чтобы позволить Вам проводить линии для вещей как дороги, которые могли бы быть расположены непосредственно на границе того прямоугольника. Для некоторых типов содержания, таких как градиенты, это также означает, что Вы, возможно, должны были бы применить прямоугольник отсечения к
context
гарантировать получение содержится к корректной области.Рекомендуется использовать Базовую Графику для рисования любого содержания для оверлейных программ. Если Вы принимаете решение использовать классы UIKit и методы для рисования вместо этого, необходимо продвинуть указанный графический контекст на штабель контекста (использующий
UIGraphicsPushContext
функция) прежде, чем сделать любые звонки получения. Когда Вы сделаны, таща, необходимо так же вытолкать графический контекст от штабеля с помощьюUIGraphicsPopContext
. Во время получения Вы можете обычно рисовать содержание, но должны избежать управлять представлениями и другими классами, которые безопасно использовать только от основного потока приложения.Для улучшения производительности получения представление карты может разместить рядом оверлейные программы, становящиеся достаточно большими и представляющие мозаики от отдельных потоков. Ваша реализация этого метода должна поэтому быть способна к безопасному выполнению от многократных потоков одновременно. Кроме того, необходимо избежать рисовать все содержание наложения каждый раз, когда этот метод вызывают. Вместо этого Ваша реализация должна всегда брать
mapRect
параметр в рассмотрение и избегает рисовать содержание вне того прямоугольника. Отказ сделать так мог привести к проблемам производительности.Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
-
- setNeedsDisplayInMapRect:
(iOS 7.0)Лишает законной силы представление в данном прямоугольнике карты во всех масштабах изменения масштаба.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (void)setNeedsDisplayInMapRect:(MKMapRect)
mapRect
Параметры
mapRect
Часть наложения, которое должно быть обновлено. Это значение указано с помощью прямоугольника карты и не координат представления. Можно преобразовать от прямоугольника представления до прямоугольника карты с помощью
mapRectForRect:
метод.Обсуждение
Отмечание прямоугольника как недопустимые причины, что часть представления, которое будет перерисовано во время следующего цикла обновления. Этот метод лишает законной силы наложение независимо от текущего масштаба изменения масштаба, связанного с картой.
Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.
-
- setNeedsDisplayInMapRect:zoomScale:
(iOS 7.0)Лишает законной силы представление в данном прямоугольнике карты, но только в указанном масштабе изменения масштаба.
Оператор осуждения
Используйте
MKOverlayRenderer
объект вместо этого.Объявление
Objective C
- (void)setNeedsDisplayInMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
Параметры
mapRect
Часть наложения, которое должно быть обновлено. Это значение указано с помощью прямоугольника карты и не координат представления. Можно преобразовать от прямоугольника представления до прямоугольника карты с помощью
mapRectForRect:
метод.zoomScale
Масштаб изменения масштаба, для которого Вы хотите лишить законной силы наложение.
Обсуждение
Отмечание прямоугольника как недопустимые причины, что часть представления, которое будет перерисовано во время следующего цикла обновления. Этот метод лишает законной силы наложение только, когда это нарисовано в указанном масштабе изменения масштаба.
Оператор импорта
Objective C
@import MapKit;
Доступность
Доступный в iOS 4.0 и позже.
Осуждаемый в iOS 7.0.