This repository has been archived by the owner on Jun 21, 2023. It is now read-only.
macos-v0.15.0
This version of the Mapbox Maps SDK for macOS corresponds to version 5.8.0 of the Mapbox Maps SDK for iOS. Changes since macos-v0.14.0:
Styles and rendering
- Added the
-[MGLMapViewDelegate mapView:shouldRemoveStyleImage:]
method for optimizing style image caching. (mapbox/mapbox-gl-native#14769) - Added the
image
expression function for converting an image name into a style image. Use this function in expressions in style JSON or with theMGL_FUNCTION()
syntax in anNSExpression
format string. Image expressions are compatible with themgl_attributed:
expression function andMGLAttributedExpression
classes for embedding icons inline in text labels. (mapbox/mapbox-gl-native#15877, mapbox/mapbox-gl-native#15937) - The
IN
andCONTAINS
predicate operators can now test whether a string is a substring of another string or whether the evaluated feature (SELF
) lies within a givenMGLShape
orMGLFeature
. (#183, #184) - Added the
MGLSymbolStyleLayer.textWritingModes
layout property. This property can be set toMGLTextWritingModeHorizontal
orMGLTextWritingModeVertical
. (mapbox/mapbox-gl-native#14932) - Added the
MGLLineStyleLayer.lineSortKey
andMGLFillStyleLayer.fillSortKey
properties. (#179) - The
MGLIdeographicFontFamilyName
Info.plist key now also accepts an array of font family names, to customize font fallback behavior. It can also be set to a Boolean value ofNO
to force the SDK to typeset CJK characters in a remote font specified byMGLSymbolStyleLayer.textFontNames
. (mapbox/mapbox-gl-native#14862) - The
MGLSymbolStyleLayer.iconTextFit
property now respects the cap insets of any nine-part stretchable image passed into the-[MGLStyle setImage:forName:]
method. You can define the stretchable area in Xcode’s asset catalog or by setting theNSImage.capInsets
property. (#182) - The
-[MGLStyle localizeLabelsIntoLocale:]
and-[NSExpression mgl_expressionLocalizedIntoLocale:]
methods can now localize text into Traditional Chinese and Vietnamese. (#173) - Fixed crashes triggered when
MGLSource
andMGLStyleLayer
objects are accessed after having been invalidated after a style change. (mapbox/mapbox-gl-native#15539) - Fixed an issue where fill extrusion layers would be incorrectly rendered above other layers. (mapbox/mapbox-gl-native#15065)
- Fixed rendering and collision detection issues with using
MGLSymbolStyleLayer.textVariableAnchor
andMGLSymbolStyleLayer.iconTextFit
properties on the same layer. (mapbox/mapbox-gl-native#15367) - Fixed symbol overlap when zooming out quickly. (mapbox/mapbox-gl-native#15416)
- Fixed an issue where non-template images would draw as template images when used in the same style layer. (mapbox/mapbox-gl-native#15456)
- Fixed an issue where the collision boxes for symbols would not be updated when
MGLSymbolStyleLayer.textTranslation
orMGLSymbolStyleLayer.iconTranslation
were used. (mapbox/mapbox-gl-native#15467) - Fixed an issue that caused
MGLTileSourceOptionMaximumZoomLevel
to be ignored when settingMGLTileSource.configurationURL
. (mapbox/mapbox-gl-native#15581) - Fixed an issue where
MGLSymbolStyleLayer.symbolSortKey
could sort text and icons incorrectly. (mapbox/mapbox-gl-native#16023) - Fixed an issue where style layers backed by a shape source could flicker when transitioning between styles. (mapbox/mapbox-gl-native#15907, mapbox/mapbox-gl-native#15941)
- Improved the performance of loading a style that has many style images. (mapbox/mapbox-gl-native#16187)
- Updated “map ID” to the more accurate term “tileset ID” in documentation; updated “style's Map ID” to the more accurate term “style URL”. (mapbox/mapbox-gl-native#15116)
Camera
- Setting
MGLMapView.contentInset
now moves the map’s focal point to the center of the content frame after insetting. (mapbox/mapbox-gl-native#14664) - The
-[MGLMapView setCamera:withDuration:animationTimingFunction:edgePadding:completionHandler:]
method now adds the current value of theMGLMapView.contentInsets
property to theedgePadding
parameter. (mapbox/mapbox-gl-native#14813) - Added variants of multiple animated
MGLMapView
methods that accept completion handlers (mapbox/mapbox-gl-native#14381):-[MGLMapView setVisibleCoordinateBounds:edgePadding:animated:completionHandler:]
-[MGLMapView setContentInsets:animated:completionHandler:]
-[MGLMapView showAnnotations:edgePadding:animated:completionHandler:]
- Added the
MGLMapView.minimumPitch
andMGLMapView.maximumPitch
properties to further limit how much the user or your code can tilt the map. (#208) - Fixed an issue where it was possible to set the map’s content insets then tilt the map enough to see the horizon, causing performance issues. (mapbox/mapbox-gl-native#15195)
- Fixed an issue where animated camera transitions zoomed in or out too dramatically. (mapbox/mapbox-gl-native#15281)
- Improved performance when continuously animating a tilted map. (mapbox/mapbox-gl-native#16287)
Feature querying
- Fixed an issue where
-[MGLMapView visibleFeaturesInRect:]
and-[MGLShapeSource featuresMatchingPredicate:]
omitted some features from the return value. (mapbox/mapbox-gl-native#14884) - Fixed an issue where
-[MGLMapView visibleFeaturesInRect:]
and-[MGLShapeSource featuresMatchingPredicate:]
could return incorrect coordinates at zoom levels 20 and higher. (mapbox/mapbox-gl-native#15560) - Improved feature querying performance. (mapbox/mapbox-gl-native#14930)
Snapshots
- Added an
-[MGLMapSnapshotter startWithOverlayHandler:completionHandler:]
method to provide the snapshot's currentCGContext
in order to perform custom drawing onMGLMapSnapshot
objects. (mapbox/mapbox-gl-native#15530) - Added the
MGLMapSnapshotter.delegate
property andMGLMapSnapshotterDelegate
protocol for customizing the style before taking a snapshot. (#235) - You no longer need to explicitly capture the
MGLMapSnapshotter
object in the completion handler that you specify in-[MGLMapSnapshotter startWithCompletionHandler:]
. Even if you declare the snapshotter locally without holding a strong reference to it, the snapshotter is only deallocated after the completion handler finishes, and the completion handler generally receives a valid snapshot. (#210) - The
-[MGLMapSnapshotter cancel]
method no longer calls the completion handler passed into-[MGLMapSnapshotter startWithCompletionHandler:]
. (#210) - Fixed an issue where the
MGLMapSnapshotter.loading
property always returnedNO
, even while loading a snapshot. (#210)
Networking and storage
- Ideographic glyphs from Chinese, Japanese, and Korean are no longer downloaded by default as part of offline packs; they are instead rendered on-device, saving bandwidth and storage while improving performance. (mapbox/mapbox-gl-native#14176)
- Downloaded offline packs no longer reduce the storage space available for ambient caching of tiles and other resources. (mapbox/mapbox-gl-native#15622)
- Added the
MGLMapView.prefetchesTiles
property to configure lower-resolution tile prefetching behavior. (mapbox/mapbox-gl-native#14816) - Added the
-[MGLOfflineStorage preloadData:forURL:modificationDate:expirationDate:eTag:mustRevalidate:completionHandler:]
method for determining when the data is ready to retrieve from the cache. (#188) - Fixed a crash when
-[MGLOfflinePack invalidate]
is called on different threads. (mapbox/mapbox-gl-native#15582) - Fixed issues where an offline pack would stop downloading before completion. (mapbox/mapbox-gl-native#16230, mapbox/mapbox-gl-native#16240)
- When an offline pack encounters an HTTP 404 error, the
MGLOfflinePackUserInfoKeyError
user info key of theMGLOfflinePackErrorNotification
now indicates the resource that could not be downloaded. (mapbox/mapbox-gl-native#16240) - Expired resources are now fetched at a lower priority than new resources. (mapbox/mapbox-gl-native#15950)
Other changes
- Fixed a memory leak when zooming with any options enabled in the
MGLMapView.debugMask
property. (mapbox/mapbox-gl-native#15395) MGLLoggingLevel
has been updated to better match core log levels. You can now useMGLLoggingConfiguration.loggingLevel
to filter logs from core. (mapbox/mapbox-gl-native#15120)
Documentation is available online or as part of the download.