Commit Graph

30 Commits

Author SHA1 Message Date
Jason Wray
015a64b2a2 [ios] Fix undeclared selector warning in MGLAnnotationView
`setCoordinate:` isn't available to regular MGLAnnotation, only MGLPointAnnotation.
2019-06-03 16:49:42 -07:00
Konstantin Käfer
9eb43a587b [ios,macos] refactor MGLMapViewImpl 2019-05-29 18:27:42 +02:00
Fabian Guerra Soto
c8fbcfd322 [ios, macos] Logging. (#13235)
* [ios, macos] Update the logging subsystem to platform agnostic.

* [ios, macos] Add coordinate to string function.

* [ios, macos] Add BOOL to string function.

* [ios, macos] Add tracing logs.

* [ios, macos] Add tracing logs to generated style classes.

* [ios, macos] Split logging categories accordingly to MGLLoggingLevel.

* [ios, macos] Log network requests.

* [ios, macos] Migrate NSAssert to MGLAssert.

* [ios, macos] Include MGLLoggingConfiguration to filesource-files.txt.

* [ios, macos] Fix logger string specifier for the line parameter.

* [ios, macos] Add logs to shapes classes.

* [ios, macos] Add logs to offline classes.

* [ios, macos] Add logs to annotation classes.

* [ios, macos] Add logs to foundation classes.

* [ios, macos] Fix snapshotter size logging.

* [macos] Add logs to map view.

* [ios, macos] Fix string from boolean prefix, add custom function for NSCAssert.

* Log size test

* [ios, macos] Add logging conditional compilation flag.

* [ios, macos] Rename function NSStringFromMGLTransition to MGLStringFromMGLTransition.

* [ios, macos] Remove verbose logging for release builds.

* [ios, macos] Rename NSStringFromCLLocationCoordinate2D to MGLStringFromCLLocationCoordinate2D.

* [ios, macos] Clean unnecesary blank lines in MGLLight.mm set methods.

* [ios, macos] Fix logging grammar, format, function names.

* [ios, macos] Remove compilation flag, rename flags.
2018-11-14 15:42:18 -08:00
Jason Wray
ee10088702 [ios] Fix MGLAnnotationView.rotatesToMatchCamera clobbering other transforms 2018-05-08 18:26:11 -04:00
Jason Wray
be3fc4413a [ios] Change MGLAnnotationView.scalesWithViewingDistance default value to NO 2018-04-12 16:49:30 -04:00
Jason Wray
42845ad63f [ios] Optimize MGLAnnotationView scale transform when not pitched 2018-01-18 13:59:43 -05:00
Tobrun
2d039d3c6b Merge release-ios-v3.6.0-android-v5.1.0 to master (#9170)
* [android] Update release script to support CircleCI builds (#8950)

* update release script to trigger builds on circleci now

* update release script to trigger builds on circleci now

* [core] When a layer is added, reload its source's tiles

* [android] - keep observer when timeout occurs, make observer param nullable, fixup log messages (#8919)

* [android] - avoid crashing when deleting already deleted region (#8920)

* [android] - update LOST to 2.3.0 (#8872)

* [android] - update proguard config, allow debug mimification, update OkHttp to latest version (#8944)

* [core, android, ios, macos, qt] v10 default styles

Upgraded from v9 default styles to v10 wherever the developer expects to get the latest and greatest, as well as in a couple tests where it may be beneficial to ensure that we can handle a two-digit version number in the style URL.

Cherry-picked from ed54849e99.

* [ios, macos] Updated documented default style version

MGLStyleDefaultVersion is just for Streets now. Deleted style version documentation tests because not all styles are on the same version.

Cherry-picked from ca97dd8cf4.

* [ios, macos] Undeprecated unversioned style URL factory methods

Undeprecated the unversioned style URL factory methods in MGLStyle for consistency with the Android and Qt SDKs. Added warnings about using them with the runtime styling API.

Refactored mbgl::util::default_styles to track different versions for different styles.

Cherry-picked from 9e384b78fb.

* [core, android, ios, macos] Added Traffic Day/Night to default styles

The Styles API section of the Mapbox API Documentation site now lists Traffic Day v2 and Traffic Night v2, so this change adds those styles to all the places where styles are listed.

Also switched iosapp and macosapp to unversioned style factory methods since MGLStyleDefaultVersion is no longer applicable for all styles.

Cherry-picked from 4d6f54553d.

* [android] Release android-v5.1.0-beta.2 (#8976)

* [android] url getter on sources

* [android] fix ui test filter in makefile

* [android] - build SNAPSHOT from release branch (#8958)

* [android] - update changelog for 5.1.0-beta.2

* [android] - bump version number

* [android] - Camera change listener v2.0

* [core] allow filesource url transform reset

* [android] Update attribution wordmark (#8774)

* Update wordmark on android

* Moved attribution i icon to the right of mapbox word (in mapview preview image)

* update padding and margin

* [android] update hardcoded branch name

* revert version to 5.1.0-SNAPSHOT

* [android] - MarkerView deselect events with OnMarkerViewClickListener integration (#8996)

* [android] - publish SNAPSHOT from release 5.1.0 branch (#8995)

* [ios, macos] edited identity interpolation mode documentation (#8657)

* [ios, macos] Factored out tile URL template guide

Factored out redundant tile URL template documentation from the MGLRasterSource and MGLVectorSource documentation into a jazzy guide. This documentation used to live in one place, on a method on MGLTileSource, but that method had to be moved to MGLTileSource’s concrete subclasses. A jazzy guide is easier to link to, in any case.

* [ios] Telemetry button in modal view controllers (#9027)

Fixes #8980.

* [android] - bump tools and support lib version due to SNAPSHOT dependencies (#9046)

* [android] - bump tools and support lib version for SNAPSHOT dependencies

* revert unsupported Circle CI build tools version

* [core] Make destructor virtual to avoid object splicing during destruction

* [core] add error for non-virtual destructor deletes + add virtual dtors

* [android] -  remove marker from selected markers when removing marker from annotation manager. (#9047)

* Observe layout guides (#7716)

* [ios] observe layout guides

* [ios] update changelog

* [ios, macos] Change == to = in style function initializers

* [ios] Add annotation view initializer with annotation and reuse id (#9029)

* [ios] Remove annotation view from container view when annotation removed (#9025)

The annotation container view keeps an array of annotation views that is separate from the array of subviews that is a property of the UIView parent class. This removes an annotation view from that container view array when the associated annotation is removed. This avoids issue related to previously removed annotation views continuing to be involved in map view logic around annotation view selection due to taps.

* [android] - correct bearing conversion when animating the map with jumpTo, easeTo and animateTo. (#9050)

* [ios, macos] Updated `maximumZoomLevel` description, cherry-picked #8818 (#8842)

Cherry-picked from a3e4e67ea6.

* [ios] Updated podspecs and changelog for v3.5.3 (#8870)

Cherry-picked from 25c19902a2.

* [ios] Update podspecs and changelog for iOS v3.5.4

Cherry-picked from db7bb509e9.

* [ios, macos] Updated changelogs

* [ios, macos] changed TRUE -> 'true' (#9059) fixes #9056

* [ios, macos] Light property implementation in MGLStyle (#9043)

* [ios, macos] Add MGLLight to MGLStyle

* [ios, macos] Implement Objc bindings for Light object

* [ios, macos] Remove rawLight from MGLLight and re-implement it as value class

* [ios, macos] Fix build on macos

* [ios, macos] Add MGLLight documentation, Move MGLLightPosition to MGLLight

* [ios, macos] Add MGLLight tests.

* [ios, macos] Update changelogs

* [ios, macos] Fix misspelling

* [ios, macos] Fix MGLLightAnchor enum property names

* [ios, macos] Update documentation. Improve varialble naming.

* [ios, macos] Rename MGLLightPosition to MGLSphericalPosition

* [ios, macos] Update data types of MGLSphericalPosition

* [android] - horizontally rotated in snapshot (#9083)

* Cherry-pick arabic text to release branch v3.6.0 (#9071)

* [core] Throttle tiles to redo symbol placement at most once every 300ms.
Fixes issue #8435 and prepares for pitch-scaling changes in issue #8967.

* [core] Disable letter-spacing for Arabic labels (issue #9057)

* [ios,macos] multipolygon coordinate (#8713)

* [ios] MGLMultiPolygon's coordinate property implemented

* [ios,macos] Add polylabalel to project config

* [ios,macos] Change coordinate property for MGLPolyline,MGLPolygon,MGLMultiPolygon

* [macos] Change project configuration to support polilabel

* [ios,macos] Add MGLLocationCoordinate2DFromPoint

* [ios, macos] Update changelogs

* [ios, macos] remove unnecesary variables

* [ios, macos] Add radians conversions

* [ios, macos] Add coordinate calc to MGLPolyline

* [ios, macos] Move radian fuctions to MGLGeometry_Private.h

* [ios, macos] Fix code style

* [ios, macos] Fix code indentation

* [ios, macos] Fix radian per meters constant

* [ios, macos] Add test scenarios to testPolyline

* [ios, macos] Fix test accuracy

* [ios, macos] More robust Streets localization

Added Arabic, Portuguese, and Simplified Chinese to the list of languages with specialized fields in the Mapbox Streets source.

Rely on NSBundle to select the most appropriate locale based on the user’s preferred languages.

* [ios] Fallback to Mapbox.bundle as the framework bundle (#9074)

Fixes an issue where localizations could not be found when using static builds.

Throws exception if our bundle can't be found.

* [ios] Move image resources to an asset catalog & switch to PDFs

* [ios, macos] Updated changelogs

Reorganized the changelogs with a new packaging section. Added blurbs about #9062, #8713, #9060, and #9031.

* [ios] Update pods spec for iOS v3.6.0-beta.1

* [macos] Enable View ‣ Traffic Night

Enable the View ‣ Traffic Night menu item and check it when that style is active.

* [android] - stop location updates when toggle MyLocationView state (#9099)

* [android] - LatLngBounds bearing default value (#9102)

* [ios, macos] Fix MGLLight.achor to accept style functions

* [ios] Fix annotation initializers for subclasses of MGLAnnotationView (#9104)

Use a common init function in both of the provided initializers so that subclasses of `MGLAnnotationView` written in Swift don't need to override `init(annotation, reuseIdentifier)`

* [ios] Moved `MGLLight` in jazzy table of contents (#9111)

* [android] - logo placement for creating a Mapview programatically (#9094)

* [android] - Correct logo placement for creating a Mapview programatically, fixup non default placements

* Fixed NIGHTY_TWO_DP typo to NINETY_TWO_DP

* [android] - add binding support for Light (#9013)

* [android] Update Lost to final version 3.0.0 (#9112)

* update lost to final version 3.0.0

* bump MAS version to 2.1.1

* [android] - convert dp to pixels when getting meters per pixel at. (#9048)

* Release Android v5.1.0-beta.3 (#9115)

* [android] - Changelog update for Android release v5.1.0-beta.3

* update CI & version

* reset release properties

* [android] - harden orientation changes (#9128)

* [ios] Remove filter of single metric event

* [ios] remove layout guide observers

* Migrate to GL JS–powered feedback form (#9078)

* [ios, macos] Updated feedback URL

* [ios, macos] Add referrer, heading, pitch to feedback URL

* [ios, macos] Updated changelogs for feedback changes

* [ios] Vary referrer by platform

* [android] - javadoc update for 5.1.0 release (#9138)

* [android] - javadoc update for 5.1.0 release

* oxford comma

* Grammar/spelling tweaks

* grammar tweak

* grammar tweak

* Grammar tweaks

* Grammar tweaks

* [android] fix missing access token variable issue (#9151)

* [ios] Update pods spec for iOS v3.6.0-beta.2

* [android] Cherry picking 9133 (#9145)

* [android] Fix tracking mode + camera race condition (#9133)

* [android] fix tracking mode + camera race condition

* fix resetTrackingModesIfRequired bug (comparing current camera position with target camera position

* cherry pick #9133 and update CHANGELOG

* add null check to prevent null pointer exception

* add null check in custom location engine activity to prevent null pointer exception (#9159)

* [core] Make TransformState LatLngBounds optional

* [ios] Make annotation view rotation alignment configurable (#9147)

This commit adds `rotatesWithMap` property on `MGLAnnotationView`. This
property, when set to `YES` fixes the annotation to a map such that view
follows map's rotation angle. This is useful when user wants to display
rotation-dependent annotations (e.g. sector lights).

* [android] - validate if gestures should execute (#9173)
2017-06-02 23:41:14 +02:00
Fabian Guerra Soto
ffce46cae6 Raise exception when MGLAnnotationView.annotation property is nil (#8339)
* [ios] MGLAnnotationView annotation property made writable

* [ios] standarized exception name for annotations
2017-03-10 14:49:22 -08:00
Fabian Guerra Soto
8a5cc3560a [ios] MGLAnnotationView annotation property made writable (#8139) 2017-03-02 18:19:23 -05:00
Konstantin Käfer
62ea1f2185 [core] remove trailing whitespace, add trailing newlines, add space after // 2017-01-27 11:44:16 +01:00
Fredrik Karlsson
2c7569b879 [ios, macos] features and annotations now conforms to NSSecureCoding 2016-12-22 13:58:45 +01:00
Jason Wray
fcee1a85cd [ios] Allow implicit animation of annotation views
- Allows the user location annotation to again animate its movements while no tracking mode is enabled.
2016-08-31 15:55:34 -04:00
Justin R. Miller
2501b2cc7b [ios] preserve annotation transforms during perspective scaling 2016-08-26 14:29:31 -07:00
Minh Nguyễn
5539a90c48 [ios, macos] Renamed Objective-C++ headers to .h
Also removed a redundant reference to MGLStyle_Private.h in ios.xcodeproj.

Fixes #5952.
2016-08-16 16:46:04 -07:00
Fredrik Karlsson
2354c87411 Runtime styling API for iOS/macOS (#5727)
* [ios] wip runtime styling

* [ios, macos] Outlined header templates

* [ios, macos] cleanup and use appropiate data types

* [ios, macos] removed refs to mbgl and added convenient color methods on UIColor and NSColor

* [ios, macos] updated header template, included doc string

* [ios, macos] outlined template for layer implementation files

* [ios, macos] moved script to platform/darwin and updated comments

* [ios, macos] Cleaned up the implementation template

* [ios, macos] removed unused function and added support for more datatypes

* [ios, macos] overhauling the type protocols

* [ios, macos] removed unnecessary style classes

* [ios, macos] added support for more types

* [ios, macos] fixed string and number prop values

* [ios, macos] enum getters

* [ios, macos] added removeLayer() and removed unused layer ref

* [ios, macos] fixed remaining layer types and converted style layer into a protocol

* [ios, macos] fixed addLayer() and added example for line layer

* [ios] GeoJSON source now works

* [ios] fixed raster layer and raster source

* [ios] fixed attr prop number and outlined prop function

* [ios] wip functions

* [ios] bool and float function fix

* [ios] cleanup

* [macos] fixed support for macos

* [ios] fixed string functions

* [ios] extended array functions

* [ios] added tests and fixed a few bugs

* [ios] less verbose functions and improved tests

* [ios, macos] Removed unnecessary use of default arguments

Default arguments aren’t supported in Node v4, and they aren’t needed here anyways, because we’re only testing for truthiness.

* [ios, macos] Enum setters

Rely on a macro instead of category methods to specialize the setter implementation for enum attributes, since generic types are disallowed in Objective-C method signatures and mbgl::style::PropertyType must be type-qualified.

* [ios, macos] Got macOS closer to parity w/ iOS

Added various classes and test classes to the macOS workspace. Also fixed lots of compiler errors and updated macosapp runtime styling example to use the new dictionary syntax for function stops.

Updated all conversions from Objective-C stops to C++ stops to enumerate over the dictionary. Fixed compiler errors in enum setter implementations.

Also corrected path to script in generated file comments.

* [ios, macos] Added EJS templates to project

* [ios, macos] Code formatting

Made code format more consistent.

* [ios, macos] Spelled out ID

Cocoa convention is to always spell out “ID” as “identifier”, in part to avoid confusion with the id keyword. Also, URL is capitalized in most contexts, including property names.

* [ios, macos] Grouped related headers together

* [ios, macos] Cleaned up layer transformation

Also added support for converting background layers into Objective-C.

* [ios, macos] Cleaned up tests

Also made the tests work on macOS by introducing a new window to host the map.

* [ios, macos] Replaced TODOs with #warnings

* [ios] convert array based property values

* [ios, macos] color function/undefined getter

* [ios, macos] fixed function/undefined getters for bool and float properties

* [ios, macos] more function/undefined property getters

* [ios, macos] more type conversion and cleanup

* [ios, macos] disable macos runtime styling tests for now

* [ios, macos] cleaned up style code script

* [ios, macos] more type conversion

* [ios] added a base layer to handle visibility min/max zoom

* [macos] fixed base layer

* [ios, macos] use accessor methods

* [ios, macos] cleanup

* [ios, macos] add geojson to ios and macos

* [macos] rebase fix

* [ios, macos] fixed enum getters and added tests for enums

* [ios, macos] added an update method to base layer

* [ios, macos] added some documentation

* [ios, macos] docs

* [ios, macos] removed refs to filters for now

* [ios, macos] various tail work

* [ios, macos] missing import and incorrect type
2016-08-11 13:14:45 -04:00
Jason Wray
bc845b96b0 [ios] Limit annotation view pan gesture check to own recognizer (#5813)
Allows non-dragging pans that are initiated on views to pan the underlying map.

Annotation views each have long press and pan gesture recognizers. If a
view is not draggable or not in a positive dragging state, the pan
gesture recognizer should not begin. This commit makes the criteria for
rejecting pans more strict — only `_panGestureRecognizer` should be
rejected, not the entire `UIPanGestureRecognizer` class.
2016-07-27 23:32:21 -07:00
Fredrik Karlsson
7b6ef80b5d [ios] fixes #5544 support canceling a drag operation and not by default (#5561) 2016-07-05 22:47:54 +02:00
Minh Nguyễn
bb2f627b12 [ios] Made annotation view position animatable
We don’t normally want an annotation view to animate its position, because that makes the view appear to lag behind the map. But when the annotation view moves due to the underlying annotation model object moving, the developer may want exactly that effect.

This change continues to disable the default implicit bounds (and now position) animation. It also groups the view updates in -updateAnnotationViews in a transaction that disables animation actions, to improve perceived performance with a large number of annotations. However, when the annotation model object changes, we move the annotation view outside of that transaction to allow the developer to opt into animation.

If the developer moreover wants the annotation view to animate even due to the viewport changing, they can override -setCenter: to use a UIView animation block.

Fixes #5230.
2016-07-02 21:00:41 -07:00
Minh Nguyễn
bb4606b53d [ios] Fixed KVO for annotation view center
Always reposition the annotation view using the standard -setCenter: setter, fixing KVO compliance for the center key path and making the view behave more like a normal view. -setCenter: updates the transform by side effect, and it always starts from the identity transform to avoid surprises. To apply a custom transform on an annotation view, make sure to apply it in -mapView:didFinishLoadingFrame:fullyRendered: based on the existing transform.
2016-07-02 21:00:36 -07:00
Minh Nguyễn
649b068270 [ios] Avoid resetting pitch along with center offset
Fixed a bug causing an annotation view to be scaled based on a pitch of 0° when setting the view’s center offset.
2016-07-02 21:00:36 -07:00
Minh Nguyễn
0d7d2449b1 [ios] Fixed auto-shrinking annotation views
Fixes #5547.
2016-07-02 20:20:05 -07:00
Minh Nguyễn
f2fdc23ec7 [ios] Removed MGLAnnotationView.flat
Removed MGLAnnotationView’s option to lie flat against a tilted map to work around #5090.
2016-07-02 18:41:11 -07:00
Jason Wray
1a6b513703 [ios] Fix conflict between view dragging gesture and quick zoom (#5506)
This stops the quick zoom gesture (double-tap and hold) from also triggering a drag, when performed on a draggable annotation view.
2016-06-29 12:48:53 -04:00
Jesse Bounds
16b859ff5f [ios] Always set map view reference when annotation view is created. (#5496)
This fixes two issues with annotation views that were exposed when
dragging them:

1) The annotation view's mapView property was not set until it was
moved (in `updateAnnotations:`) so it did not always call its delegate
back about the map view delegate dragging methods. This adds a call to
set the property when an annotation view is created so the delegate
methods are always called.

2) Since the mapView is now always set, a call to the map view's
callout view for selected annotation was added to the annotation
view drag handler. This forces the callout to close and eliminates
an issue where the callout would remain visible as an annotation
was dragged away which had the visual effect of a detached
callout.

To make 2 possible, the map views selected callout view was exposed
in the private header.
2016-06-28 12:07:12 -07:00
Fredrik Karlsson
d29bef957f [ios] fixes #5036 draggable annotation views (#5373) 2016-06-24 19:42:20 +02:00
Fredrik Karlsson
d564302c6d [ios] fixes #5129 added annotation property to MGLAnnotationView (#5307)
Also added a test case for MGLAnnotationView
2016-06-14 13:12:56 +02:00
Fredrik Karlsson
a557e1e2c9 [ios] fixes #5127, #5128, #5130 added enabled and selected property to MGLAnnotationView (#5297)
[ios] fixes #5127, #5128, #5130 added enabled and selected property to MGLAnnotationView
2016-06-14 10:36:41 +02:00
Minh Nguyễn
1f622fe48f [ios] Made annotation views accessible
Annotation views now serve as their own accessibility elements. The developer’s own subclass of MGLAnnotationView can customize the view’s accessibility frame and/or path to more accurately reflect the visual hit target.
2016-06-03 15:13:21 -07:00
Jesse Bounds
d9c6181f34 [ios] Add annotation container view (#5194)
Add a container view to hold annotations. This gets around a performance
issue with `UIView:addSubview:` where adding views is N^2. It helps
annotation views avoid cutting into callout views when the annotation
views are transformed to be "flat".
2016-06-01 17:36:07 -07:00
Jesse Bounds
c90f51a1a9 [ios] Add annotation view scaling (#5085)
This adds an option to MGLAnnotationView so that a developer can control
how their annotation views scale in size as they approach the top of
the map view (along the Y axis). The size change is also affected by
the pitch (tilt) of the map view. If there is no tilt then scaling
is not performed. As the map is tilted scaling is gradually applied.

This turns the MGLAnnotationView implementation into an Objective C++
class so that SDK constants from C++ files can be used.

The new behavior is enabled by default to maintain consistency with
annotations backed by GL sprites. The MBXViewController redundantly
sets the new property as an illustration of use.
2016-05-26 23:10:02 -07:00