Resolved unused variable warnings in Release configuration that occurred because they were only used within NSAssert() invocations, which are omitted from Release builds.
Now that annotation classes override -isEqual:, it’s no longer appropriate to rely on -isEqual: or -containsObject: to check for the preexistence of an annotation. Those methods become deep equality tests, which have worse performance. Checking for identity allows the developer to add a polyline and polygon with identical coordinates, title, etc. to the map.
Implemented a missing -[MGLPolyline isEqual:].
Removed outdated comments about -annotationTagForAnnotation: being expensive.
jazzy is inconsistently converting straight apostrophes that immediately follow backticks into either ‘ or ’ from one run to the next. Smarten the apostrophe to keep it stable.
Avoid canceling transitions (and triggering preexisting completion handlers) until we get a chance to ensure that a new transition really does have to begin. Consistently avoid mbgl transitions for redundant camera changes. Upon bailing, schedule the completion handler to run asynchronously on a delay equivalent to the requested animation duration.
Added a “functional” equality method to MGLMapCamera that avoids trivial differences.
Fixed invocations of XCTAssertEqualWithAccuracy() that incorrectly expressed the accuracy as a number of digits rather than a scalar tolerance.
Override `insertText:`
- send all `keyDown:` events to `interpretKeyEvents:` method;
- in `insertText:` method check for the text to be sent and
adjust zoom level if needed;
* [ios, macos] Added delegate method to restrict movement
Added a way for the delegate to restrict where the user can move within the map using gestures.
Fixes#2457.
* [ios] Added support to restrict movement in pinch/rotate gestures
* [ios] Added support to restrict movement in double tap/quick zoom/two finger drag gestures
* [ios] fixed camera reset before two finger drag gesture is complete
* [ios] fixed camera comparison in double tap gestures
* [ios] Changelog update
* [macos] Changelog updated
* [ios, macos] Changelog cleanup
* [ios, macos] Added documentation to clarify performance impact
* [ios] clarified variable name
* [ios] blocking gestures implementation changed to a predictive approach
* [ios] gesture delegate methods refactoring
* [ios] Removed duplicated methods, improved code readability
* [ios] code refactoring to clarify the conditions to execute a gesture
Fixed an issue causing the mouse cursor to jump after shift- or option-dragging a map view if the window opened on a screen with a different size than the screen with keyboard focus.
* Expand on Gesture Implementation
Adding Gesture info as discussed: https://github.com/mapbox/mapbox-gl-native/issues/2278#issuecomment-273685832
Not sure if using codeblocks is kosher.
* Update styling and verbiage
* More updates
* [ios] -requireGestureRecognizerToFail: seems to be enough
* [macos] Added corresponding macOS documentation
-awakeFromNib nils out the styleURL property to ensure a style is always present on load. However, if the style URL is specified in the Style URL inspectable, it is set somewhere between -initWithCoder: and -awakeFromNib; nilling out the styleURL property in -awakeFromNib thus resets the style to the default. This change guards against nilling out a non-nil style URL, ensuring that -setStyleURL: is called once and only once on launch.
* [ios, macos] Made MGLMapView.style property nullable
MGLMapView’s style property is now nullable (optional in Swift). The property is set to nil while the style loads and in the event that the style has failed to load.
* [ios, macos] Switch to delegate method
* [macos] Create MGLMapView programmatically for layer tests
When MGLMapView is created via a nib, -initWithCoder: is called, causing styleURL to be set to nil, in turn causing the default Streets style to be loaded, fooling MGLStyleLayerTests into thinking one-line has been loaded. Instead, create MGLMapView programmatically, passing the intended style URL into the initializer, preventing Streets from being loaded.
Eliminated the separate NSValue+MGLStyleLayerAddition files, moving the categories into their respective style layer headers to be closer to the enumeration declarations.
* [ios, macos] Optimized changelog for runtime styling
Changelog entries related to style JSON now lead off with the analogous portion of the runtime styling API.
* [ios, macos] Autolink cross-class property references in docs
jazzy can autolink `Class.property` references in documentation comments.
* [ios, macos] Removed extra blank lines
* [ios, macos] Corrected typo in MGLMultiPoint docs
* [ios, macos] Rewrote shape and feature docs
Rewrote documentation about MGLShape, its subclasses, and MGLFeature to emphasize runtime styling uses over annotation uses, associate each type with real-world concepts, cross-reference related style layer classes, and cross-reference related or easily confused shape classes. Links to the GeoJSON specification have been updated to RFC 7946.
* [ios, macos] Expanded style layer docs
With this change, documentation about style layer classes is nominally based on the documentation in the style specification. However, all the existing layer types’ documentation has been overridden to explain what the layer looks like, relate the layer to a real-world concept, and cross-reference related geometry classes. This change also corrects the description of MGLBackgroundStyleLayer, which erroneously stated that the identifier must be “background”, whereas that only happens to be true by default for Studio template styles.
* [ios, macos] Wrap style layer docs
* [ios, macos] Removed unused code
* [ios, macos] Corrected symbol references in docs
* [ios, macos] Corrected typo in abstract class exception
* [ios, macos] Audited source headers for nullability
* [macos] Made MGLTileSet public
* [ios, macos] Replaced MGLTileSet with MGLTileSource
MGLRasterSource and MGLVectorSource now share a common abstract superclass, MGLTileSource. MGLTileSet has been removed. MGLTileSource is modeled after mbgl::style::RasterSource and mbgl::style::VectorSource. It has initializers that incorporate the parameters of MGLTileSet’s initializers, but it lacks getters for everything but the attribution string. MGLTileSet’s properties have been converted into options that can be passed into MGLTileSource’s initializers in a dictionary.
Properly implement rawSource as a covariant property so that it doesn’t end up getting autosynthesized as a shadow ivar. This prevents concrete subclasses of MGLSource from setting _rawSource directly but getting a different value out of self.rawSource.
Marked -[MGLSource init] as unavailable and ensured that concrete subclasses of MGLSource have the right set of initializers marked as designated initializers.
Documentation comments for each concrete source class identify the corresponding source type in the style specification. Clarified the purpose of MGLTileSetScheme, now known as MGLTileCoordinateSystem.
* [ios, macos] Clarified tile size interpretation
Sticking to a default value of 256 for mapbox: URLs, but other URLs get the standard 512 value.
* [ios, macos] rawSource is always set
* [ios, macos] Cleaned up MGLShapeSource initialization
rawSource is never nil, so there’s no need for a -commonInit method. Extracted -geoJSONOptions from MGLShapeSource into a standalone function for easier testing.
* [ios, macos] Synchronized headers in project
Realphabetized headers in groups. Added headers missing from one project or the other.
* [ios, macos] Added MGLShape methods to (de)serialize GeoJSON data
Added a class initializer and instance method to MGLShape that deserialize and serialize the shape as GeoJSON data, respectively. The new initializer handles parsing errors gracefully.
Removed methods specific to GeoJSON data from MGLShapeSource, in an effort to reduce parallel state. Developers are now expected to go through the new MGLShape initializer to get an MGLShape representation. Alternatively, a local file URL can be passed into the other MGLShapeSource initializer.
* [ios, macos] Typo in assertion message
* [ios, macos] Simplified GeoJSON serialization
Every MGLShape now knows its most specific mbgl::GeoJSON representation.
* [ios, macos] Reremoved MGLFeaturePrivate
mbgl::GeoJSON, which is a variant, allows a single GeoJSON representation method to traffic in whatever type is needed for a particular shape class. This change removes some hidden private protocols, which are a bug waiting to happen.
* [ios, macos] Fixed covariant rawLayer property
Properly implement rawLayer as a covariant property so that it doesn’t end up getting autosynthesized as a shadow ivar. This prevents concrete subclasses of MGLStyleLayer from setting _rawLayer directly but getting a different value out of self.rawLayer.
* [ios, macos] Use MGLAttributionInfo for source attribution
Made MGLAttributionInfo public. Replaced MGLTileSource’s attribution property with an attributionInfos property set to an array of MGLAttributionInfo objects. Added an MGLTileSourceOption for specifying an array of MGLAttributionInfo objects instead of an HTML string (either is acceptable when creating an MGLTileSource).
* [ios, macos] Corrected method references in documentation