MKOverlayRenderer
MKOverlayRenderer
класс определяет основное поведение, связанное со всеми основанными на карте оверлейными программами. Средство рендеринга наложения рисует визуальное представление объекта наложения — т.е. объект, соответствующий MKOverlay
протокол. Этот класс определяет инфраструктуру получения, используемую представлением карты. Подклассы, как ожидают, переопределят drawMapRect:zoomScale:inContext:
метод для рисования содержания наложения.
Платформа Набора Карты обеспечивает несколько конкретных экземпляров средств рендеринга наложения. В частности это обеспечивает средства рендеринга для каждого из конкретных объектов наложения. Если Вы хотите нарисовать содержание наложения по-другому, можно использовать одно из этих существующих средств рендеринга или определить собственные подклассы.
Разделение на подклассы примечаний
Можно разделить на подклассы MKOverlayRenderer
создать оверлейные программы на основе пользовательских форм, содержания или методов получения. Единственные подклассы метода, как ожидают, переопределят, drawMapRect:zoomScale:inContext:
метод. Однако, если Ваш класс содержит содержание, которое может не быть готово к праву заимствования далеко, необходимо также переопределить canDrawMapRect:zoomScale:
метод и использование это для создания отчетов, когда класс готов и в состоянии нарисовать.
Представление карты может разместить большие оверлейные программы рядом и распределить рендеринг каждой мозаики для разделения потоков. Поэтому реализация Вашего drawMapRect:zoomScale:inContext:
метод должно быть безопасно выполнить от фоновых потоков и от многократных потоков одновременно.
Наследование
-
NSObject
-
MKOverlayRenderer
-
MKOverlayPathRenderer
-
MKTileOverlayRenderer
-
NSObject
-
MKOverlayRenderer
-
MKOverlayPathRenderer
-
MKTileOverlayRenderer
Оператор импорта
Swift
import MapKit
Objective C
@import MapKit;
Доступность
Доступный в OS X v10.9 и позже.
-
init (наложение:) - initWithOverlay:
Определяемый инициализаторИнициализирует и возвращает средство рендеринга наложения и связывает его с указанным объектом наложения.
Объявление
Swift
init!(overlay
overlay
: MKOverlay!)Objective C
- (instancetype)initWithOverlay:(id<MKOverlay>)
overlay
Параметры
overlay
Объект наложения для использования при рисовании содержания наложения на карте. Этот объект предоставляет данные, должен был нарисовать форму наложения. Средство рендеринга наложения хранит сильную ссылку к этому объекту.
Возвращаемое значение
Инициализированный объект средства рендеринга наложения.
Обсуждение
Первоначально, средство рендеринга наложения предполагает, что наложение полностью непрозрачно и что это имеет масштабный коэффициент содержания 1,0. Можно изменить эти значения по мере необходимости с помощью
alpha
иcontentScaleFactor
свойства.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Объект наложения, содержащий данные для рисования. (только для чтения)
Объявление
Swift
var overlay: MKOverlay! { get }
Objective C
@property(nonatomic, readonly) id< MKOverlay > overlay
Обсуждение
Объект наложения содержит координату, в которой можно нарисовать наложение и другую информацию, которую предоставляет Ваше приложение.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Сумма прозрачности для применения к наложению.
Обсуждение
Значение в этом свойстве может быть в диапазоне
0.0
к1.0
, где0.0
представляет общую прозрачность и1.0
представляет общую непрозрачность. Значение по умолчанию этого свойства1.0
.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
contentScaleFactor contentScaleFactor
СвойствоМасштабный коэффициент раньше рисовал содержание наложения. (только для чтения)
Объявление
Swift
var contentScaleFactor: CGFloat { get }
Objective C
@property(readonly) CGFloat contentScaleFactor
Обсуждение
Масштабный коэффициент определяет, как содержание отображается от логического координатного пространства (измеренный в точках) к координатному пространству устройства (измеренный в пикселях). Это значение обычно также
1.0
или2.0
. Более высокие масштабные коэффициенты указывают, что каждая точка представлена больше чем на один пиксель на экране. Например, если масштабный коэффициент2.0
и прямоугольный размер получения является 50 x 50 точек, размер базовой области составляет 100 x 100 пикселей.При рисовании содержания для оверлейных программ можно использовать это значение, чтобы определить, как лучше всего представить содержание.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает точку в области получения средства рендеринга наложения, соответствующей указанной точке на карте.
Объявление
Swift
func pointForMapPoint(_
mapPoint
: MKMapPoint) -> CGPointObjective C
- (CGPoint)pointForMapPoint:(MKMapPoint)
mapPoint
Параметры
mapPoint
Точка на двумерной проекции карты. Если у Вас есть координатное значение (широта и долгота), можно использовать
MKMapPointForCoordinate
функционируйте для преобразования той координаты в точку карты.Возвращаемое значение
Точка в области получения наложения, соответствующей точке карты.
Обсуждение
Можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает точку на карте, соответствующей указанной точке в области получения средства рендеринга наложения.
Объявление
Swift
func mapPointForPoint(_
point
: CGPoint) -> MKMapPointObjective C
- (MKMapPoint)mapPointForPoint:(CGPoint)
point
Параметры
point
Точка в области получения наложения, которую Вы хотите преобразовать.
Возвращаемое значение
Точка на двумерной проекции карты, соответствующей указанной точке.
Обсуждение
Можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает прямоугольник в области получения средства рендеринга наложения, соответствующей указанному прямоугольнику на карте.
Объявление
Параметры
mapRect
Прямоугольник на двумерной проекции карты.
Возвращаемое значение
Прямоугольник в области получения наложения, соответствующей прямоугольнику карты.
Обсуждение
Можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает прямоугольник на карте, соответствующей указанному прямоугольнику в области получения средства рендеринга наложения.
Объявление
Параметры
rect
Прямоугольник в области получения наложения, которую Вы хотите преобразовать.
Возвращаемое значение
Прямоугольник на двумерной проекции карты, соответствующей указанному прямоугольнику.
Обсуждение
Можно вызвать этот метод безопасно от представления
drawMapRect:zoomScale:inContext:
метод.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Возвращает булево значение, указывающее, готово ли представление наложения нарисовать свое содержание.
Объявление
Swift
func canDrawMapRect(_
mapRect
: MKMapRect, zoomScalezoomScale
: MKZoomScale) -> BoolObjective C
- (BOOL)canDrawMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
Параметры
mapRect
Прямоугольник карты, который должен быть обновлен.
zoomScale
Текущий масштабный коэффициент применился к карте.
Возвращаемое значение
YES
true
если это средство рендеринга наложения готово нарисовать свое содержание на карте илиNO
false
если это не.Обсуждение
Средства рендеринга наложения могут переопределить этот метод в ситуациях, где они могут зависеть от доступности другой информации для рисования их содержания. Например, средство рендеринга, показывающее информацию о трафике, могло бы хотеть задержать получение, пока это не имеет все данные трафика, в которых это нуждается. В таком случае это может возвратиться
NO
false
от этого метода, чтобы указать, что это не готово. Средство рендеринга наложения могло бы также возвратитьсяNO
false
если это не рисует содержание в указанном прямоугольнике.Если Вы возвращаетесь
NO
false
от этого метода Ваше приложение ответственно за вызовsetNeedsDisplayInMapRect:zoomScale:
метод, когда средство рендеринга наложения впоследствии становится готовым нарисовать его содержание.Реализация по умолчанию этого метода возвраты
YES
true
.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Рисует содержание наложения в указанном расположении на карте.
Объявление
Swift
func drawMapRect(_
mapRect
: MKMapRect, zoomScalezoomScale
: MKZoomScale, inContextcontext
: CGContext!)Objective C
- (void)drawMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
inContext:(CGContextRef)context
Параметры
mapRect
Прямоугольник карты, который должен быть обновлен. Ваш код для прорисовки должен избежать рисовать за пределами этого прямоугольника.
zoomScale
Текущий фактор изменения масштаба применился к содержанию карты. Можно использовать это значение для конфигурирования штриховой ширины строк или других атрибутов, которые могли бы быть затронуты масштабом содержания карты.
context
Графический контекст для использования для рисования содержания наложения.
Обсуждение
Реализация по умолчанию этого метода ничего не делает. Подклассы, как ожидают, будут переопределять этот метод и использовать его для рисования содержания наложения.
При определении, где нарисовать содержание, сделайте начальные вычисления относительно самой карты. Другими словами, вычислите позицию и размер любого содержания наложения, использующего точки карты и прямоугольники карты, преобразуйте те значения в постоянного клиента
CGPoint
иCGRect
типы с помощью методов этого класса, и затем передают преобразованные точки любым примитивам получения.Рекомендуется использовать Базовую Графику для рисования любого содержания для оверлейных программ. Если Вы принимаете решение нарисовать использование классы UIKit и методы вместо этого, необходимо продвинуть указанный графический контекст на штабель контекста (использующий
UIGraphicsPushContext
функция) прежде, чем сделать любые звонки получения. Когда Вы сделаны, таща, необходимо так же вытолкать графический контекст от штабеля с помощьюUIGraphicsPopContext
. Наложение, рисующее обычно, происходит на фоновых потоках для улучшения производительности, не управляйте представлениями UIKit или другими объектами, которыми можно только управлять на основном потоке приложения.Для улучшения производительности получения представление карты может разделить наложение на многократные мозаики и представить каждого на отдельном потоке. Ваша реализация этого метода должна поэтому быть способна к безопасному выполнению от многократных потоков одновременно. Кроме того, необходимо избежать рисовать все содержание наложения каждый раз, когда этот метод вызывают. Вместо этого всегда берите
mapRect
параметр в рассмотрение и избегает рисовать содержание вне того прямоугольника.Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Лишает законной силы все содержание наложения для всех масштабов изменения масштаба.
Объявление
Swift
func setNeedsDisplay()
Objective C
- (void)setNeedsDisplay
Обсуждение
Этот метод заставляет все содержание наложения быть перерисованным во время следующего цикла обновления. Этот метод лишает законной силы наложение независимо от текущего масштаба изменения масштаба, связанного с картой.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Лишает законной силы указанную часть наложения во всех масштабах изменения масштаба
Объявление
Swift
func setNeedsDisplayInMapRect(_
mapRect
: MKMapRect)Objective C
- (void)setNeedsDisplayInMapRect:(MKMapRect)
mapRect
Параметры
mapRect
Часть наложения для обновления. Укажите, что это значение с помощью карты координирует.
Обсуждение
Отмечание прямоугольника как недопустимые причины, что часть наложения, которое будет перерисовано во время следующего цикла обновления. Этот метод лишает законной силы наложение независимо от текущего масштаба изменения масштаба, связанного с картой.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.
-
Лишает законной силы указанную часть наложения, но только в указанном масштабе изменения масштаба.
Объявление
Swift
func setNeedsDisplayInMapRect(_
mapRect
: MKMapRect, zoomScalezoomScale
: MKZoomScale)Objective C
- (void)setNeedsDisplayInMapRect:(MKMapRect)
mapRect
zoomScale:(MKZoomScale)zoomScale
Параметры
mapRect
Часть наложения для обновления. Укажите, что это значение с помощью карты координирует.
zoomScale
Масштаб изменения масштаба, для которого Вы хотите лишить законной силы наложение.
Обсуждение
Отмечание прямоугольника как недопустимые причины, что часть наложения, которое будет перерисовано во время следующего цикла обновления. Этот метод лишает законной силы наложение только в указанном масштабе изменения масштаба.
Оператор импорта
Objective C
@import MapKit;
Swift
import MapKit
Доступность
Доступный в OS X v10.9 и позже.