diff options
author | Jason Wray <jason@mapbox.com> | 2017-10-03 18:08:13 -0700 |
---|---|---|
committer | Jason Wray <jason@mapbox.com> | 2017-10-19 11:03:15 -0400 |
commit | cabf5d2970148d47b9b1ecba02bfa1f36e1f94ac (patch) | |
tree | 77b48c0916715abbedfb1ce62ed8c32dd60fd221 /platform/darwin/src/MGLGeometry.mm | |
parent | 6523b16c61d988960e24713d0198685801147c45 (diff) | |
download | qtlocation-mapboxgl-cabf5d2970148d47b9b1ecba02bfa1f36e1f94ac.tar.gz |
[ios] Avoid drawing view annotations across pixel boundaries
Diffstat (limited to 'platform/darwin/src/MGLGeometry.mm')
-rw-r--r-- | platform/darwin/src/MGLGeometry.mm | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/platform/darwin/src/MGLGeometry.mm b/platform/darwin/src/MGLGeometry.mm index 1540a3a741..43bf74c407 100644 --- a/platform/darwin/src/MGLGeometry.mm +++ b/platform/darwin/src/MGLGeometry.mm @@ -4,6 +4,10 @@ #import <mbgl/util/projection.hpp> +#if !TARGET_OS_IPHONE && !TARGET_OS_SIMULATOR +#import <Cocoa/Cocoa.h> +#endif + /** Vertical field of view, measured in degrees, for determining the altitude of the viewpoint. @@ -57,3 +61,12 @@ double MGLZoomLevelForAltitude(CLLocationDistance altitude, CGFloat pitch, CLLoc CGFloat mapPixelWidthAtZoom = std::cos(MGLRadiansFromDegrees(latitude)) * mbgl::util::M2PI * mbgl::util::EARTH_RADIUS_M / metersPerPixel; return ::log2(mapPixelWidthAtZoom / mbgl::util::tileSize); } + +CGPoint MGLPointRounded(CGPoint point) { +#if TARGET_OS_IPHONE || TARGET_OS_SIMULATOR + CGFloat scaleFactor = [UIScreen instancesRespondToSelector:@selector(nativeScale)] ? [UIScreen mainScreen].nativeScale : [UIScreen mainScreen].scale; +#elif TARGET_OS_MAC + CGFloat scaleFactor = [NSScreen mainScreen].backingScaleFactor; +#endif + return CGPointMake(round(point.x * scaleFactor) / scaleFactor, round(point.y * scaleFactor) / scaleFactor); +} |