Commit Graph

808 Commits

Author SHA1 Message Date
Minh Nguyễn
2a1a5f0885 [ios, osx] Split MGLDirectionFormatter in two
Split MGLDirectionFormatter into MGLClockDirectionFormatter, which specializes in clock positions, and MGLCompassDirectionFormatter, which boxes the compass. This neatly avoids any confusion that might arise if the developer fails to read the documentation and thinks the original unified formatter can convert between the two types of directions.
2016-04-22 11:29:10 -07:00
Minh Nguyễn
e5c6cfde4b [ios, osx] Direction formatter
Implemented an NSFormatter for formatting CLLocationDirection values as localizable display strings. The formatter supports both absolute compass directions, such as “south”, and relative “clock” directions, such as “6 o’clock”.
2016-04-22 11:13:03 -07:00
Minh Nguyễn
91023f02f8 [ios, osx] Coordinate formatter
Added a degree-minute-second coordinate formatter for general use. Use this formatter in iosapp and osxapp.

Added unit tests for the coordinate formatter and for round-tripping geometry types through NSValue.
2016-04-22 11:13:03 -07:00
Minh Nguyễn
a852ee24fb [ios, osx] Geometry value methods
Added category methods on NSValue for converting to and from the structure types defined in MGLGeometry.h.

Fixes #4485.
2016-04-22 11:13:02 -07:00
Minh Nguyễn
aded1b145d Merge branch 'release-ios-v3.2.1' 2016-04-21 21:14:45 -07:00
Minh Nguyễn
9f72d720d9 [ios] Updated changelog for map thread removal 2016-04-21 20:34:26 -07:00
Minh Nguyễn
e404eeae1b [ios] Fixed crash on missing access token
Fixed a race condition in which the access token alert controller would fail to present because the view controller hadn’t yet entered the view hierarchy, plus a downstream crash caused by the access token being missing.
2016-04-21 17:52:16 -07:00
Minh Nguyễn
3a22033b90 [ios, osx] Constrain zoom level when selecting offline pack
When selecting an offline pack for display in iosapp or osxapp, constrain the zoom level to the pack’s minimum and maximum zoom levels.

Fixes #4787.
2016-04-21 16:50:45 -07:00
Minh Nguyễn
0dbec51401 [ios, osx] Copyedited installation documentation
Copyedited installation documentation to make sense to less experienced Xcode users, ensure consistency, remove redundant language, and reflect recent build changes.
2016-04-21 14:43:49 -07:00
Jason Wray
c625dd0f7e [ios] Update changelog URLs in the bundled readmes
[skip ci]
2016-04-21 01:38:53 -04:00
Minh Nguyễn
93e9ffea88 [ios] Corrected link to CONTRIBUTING.md 2016-04-20 14:57:43 -07:00
Minh Nguyễn
4a67491a77 [ios] Relative link to CONTRIBUTING.md 2016-04-20 14:57:17 -07:00
Minh Nguyễn
78ddcd76ee [ios] Toggle telemetry on main queue
Cherry-picked from 3c4049c796.
2016-04-20 14:44:08 -07:00
Minh Nguyễn
302f69fded [ios] Assert that defaults change is on main thread
Cherry-picked from e7ddaa9285.
2016-04-20 14:43:57 -07:00
Minh Nguyễn
e5fa7093da [ios] Fixed hang observing user defaults on background queue
Fixed a deadlock that could occur if the host application attempts to set user defaults on a background queue. Now we observer user defaults changes synchronously.

Cherry-picked from d76ef6e53b.
2016-04-20 14:43:45 -07:00
Minh Nguyễn
2aaa8b9474 [ios, osx] Ignore invalid observation context
If a subclass of MGLMapView registers itself as an observer of a non-multipoint annotation’s coordinate key path but fails to handle the change in its -observeValueForKeyPath:ofObject:change:context: implementation, the context would likely be a value other than the annotation’s tag. In that case, avoid doing anything in response to the coordinate changing. Even if the context in that case happens to match the annotation’s tag – say, because the developer passed in NULL (which is equal to 0) for the first added annotation (which would have a tag of 0) – the result would be an unnecessary but harmless update.
2016-04-20 14:23:57 -07:00
Minh Nguyễn
72086edb6e [ios, osx] Avoid observing coordinate on MGLMultiPoint
There’s no point observing the coordinate key path on MGLMultiPoint, since that property is immutable. Use the observation context instead of performing an annotation tag lookup when a coordinate has changed.
2016-04-20 14:23:57 -07:00
Minh Nguyễn
268884368a [ios, osx] Fixed crash removing multipoint or duplicate annotation
Fixed a crash removing a polyline or polygon by observing the coordinate key path on all annotations, not just non-MGLMultiPoints.

Pass in the annotation tag as the observation context. This fixes a crash when an annotation is added to the map view more than once, then removed more than once.
2016-04-20 14:23:57 -07:00
Minh Nguyễn
de0705c7ed [ios, osx] Use HTML links in documentation
Replaced Markdown syntax with HTML syntax for hyperlinks in documentation comments. HTML links work both inside Xcode (whether Objective-C or Swift) and on the Web (via jazzy).

Fixes #3961.
2016-04-20 07:41:05 -07:00
Minh Nguyễn
6069647076 [ios, osx] Override user workspace settings 2016-04-19 16:28:30 -07:00
John Firebaugh
4bc4d35c60 [ios] Build output goes to build/ios 2016-04-19 16:28:30 -07:00
John Firebaugh
2d33ae5ed7 [ios, osx] Eliminate use of main.mk 2016-04-19 16:28:30 -07:00
John Firebaugh
24a9d47944 [ios, osx] Remove some non-functional platform.gyp xcode_settings
Refs #4738
2016-04-19 16:28:30 -07:00
Minh Nguyễn
f8c52d5d38 [osx] Observe annotation coordinates
MGLMapView observes changes to the coordinate property of each MGLAnnotation added to it. Changing the coordinate property in a KVO-compliant way causes the annotation to be relocated and its callout view, if present, to be dismissed. To avoid observing the same annotation twice yet also avoid expensive lookups when adding or removing annotations, MGLMapView indexes added point annotations in an NSMutableSet.
2016-04-19 14:24:59 -07:00
Minh Nguyễn
3976448479 [ios] Refactored annotation image updating 2016-04-19 14:24:59 -07:00
Minh Nguyễn
8a4c2d4b0e [ios] Observe annotation coordinates
MGLMapView observes changes to the coordinate property of each MGLAnnotation added to it. Changing the coordinate property in a KVO-compliant way causes the annotation to be relocated and its callout view, if present, to be dismissed. To avoid observing the same annotation twice yet also avoid expensive lookups when adding or removing annotations, MGLMapView indexes added point annotations in an NSMutableSet.

In iosapp, tapping a callout view moves the selected annotation to the center of the screen and deselects it.

Fixes #1980.
2016-04-19 14:24:59 -07:00
Minh Nguyễn
7a5406bc50 [ios] Update annotations instead of replacing them
When refreshing an annotation’s image, update the annotation instead of replacing it outright.
2016-04-19 14:24:59 -07:00
Minh Nguyễn
bc9b52e0ab [ios] Annotation image deletion
Added an API for deleting unused annotation images’ images. When you nil out the image of an MGLAnnotationImage, MGLMapView deletes the sprite from the style and recreates any annotation associated with the MGLAnnotationImage instance; the MGLAnnotationImage’s falls back to SDK’s default annotation image.

In iosapp, deselecting an annotation resets its image to the default; deselecting it again restores the image.

ref #3185
2016-04-19 14:24:59 -07:00
Minh Nguyễn
3c4049c796 [ios] Toggle telemetry on main queue 2016-04-19 08:54:39 -07:00
Minh Nguyễn
e7ddaa9285 [ios] Assert that defaults change is on main thread 2016-04-19 08:02:57 -07:00
Minh Nguyễn
d76ef6e53b [ios] Fixed hang observing user defaults on background queue
Fixed a deadlock that could occur if the host application attempts to set user defaults on a background queue. Now we observer user defaults changes synchronously.
2016-04-18 23:13:42 -07:00
Minh Nguyễn
b519ee908b [ios] Removed mention of MAPBOX_ACCESS_TOKEN 2016-04-18 18:01:12 -07:00
Minh Nguyễn
17a8079f30 [ios] Prompt for access token in ios-bench
Prompt for an access token before starting benchmarking.

/ref #4728
2016-04-18 17:54:01 -07:00
Minh Nguyễn
6a6b51efbc Revert "[ios, osx] Make {ios,osx}app schemes non-shared"
This reverts commit bc3512773f.
2016-04-18 17:51:53 -07:00
Minh Nguyễn
7606fc6548 [ios] Disable telemetry in simulator
When running in the simulator, disable telemetry outright instead of pointing it to the staging server.
2016-04-18 16:56:14 -07:00
Minh Nguyễn
b3a2c0d53f [ios] Removed app transport security exception for staging
Also removed staging server URL from UI test application.
2016-04-18 16:56:14 -07:00
Minh Nguyễn
4edd1e9658 [ios] Use staging server in simulator
Use the staging telemetry server when compiled for the iOS Simulator.

Fixes #3621.
2016-04-18 16:56:14 -07:00
Minh Nguyễn
27842221c9 [ios] Replaced MGLMapView redeclaration with internal header 2016-04-18 15:47:47 -07:00
Minh Nguyễn
d86e7323cc [ios] Deprecated -[MGLMapView emptyMemoryCache]
Deprecated -[MGLMapView emptyMemoryCache]. Switched ios-bench to a redeclared -didReceiveMemoryWarning as a workaround.

Fixes #1833.
2016-04-18 15:45:27 -07:00
Minh Nguyễn
1818576fe6 [ios] Made userTrackingMode KVO-compliant
Fixes #4363.
2016-04-18 15:19:15 -07:00
Minh Nguyễn
96e0857227 [ios] Prompt for access token in iosapp
If no access token is found in user defaults at launch, iosapp prompts the user for an access token. Renamed the user defaults key for the access token to conform to Cocoa naming conventions.

Fixes #4696.
2016-04-18 14:57:20 -07:00
Minh Nguyễn
947f28f8bf [ios] Added action to reload style
Fixes #3102.
2016-04-18 14:57:09 -07:00
Minh Nguyễn
a392f972fc [ios] Use downloaded local assets in ios-bench if present
If you’ve gone through the trouble of running iso-bench’s download.sh scripts, use those assets instead of fetching them at runtime from the server.
2016-04-18 14:19:09 -07:00
John Firebaugh
bc3512773f [ios, osx] Make {ios,osx}app schemes non-shared
This avoids the risk of accidentally checking in a MAPBOX_ACCESS_TOKEN environment variable.
2016-04-18 11:42:43 -07:00
Bruno de Oliveira Abinader
378885e51a Fix missing generated header include path 2016-04-18 18:19:09 +03:00
Bruno de Oliveira Abinader
6857002cb9 [build] Bump geojson-vt-cpp to v4.1.2
Minor version bump to resolve cross-compilation issues while using
geojson-vt-cpp v4.1.0.
2016-04-18 14:17:45 +03:00
Minh Nguyễn
52abcb5a73 [ios] Animate user dot between user location updates
Use UIView animation to explicitly animate the user dot between user location updates. There is a tricky special case, which is that the callout must point to the annotation view’s implicit frame but must quickly rendezvous with the explicit frame.

Fixes #1041.
2016-04-17 22:44:18 -07:00
Minh Nguyễn
f936295b76 [ios, osx] Include app/OS name/version in user agent
Fixes #3997.
2016-04-17 00:21:23 -07:00
Minh Nguyễn
943c09f1c7 [ios, osx] Took advantage of C99
Now that #4641 has removed the prohibition against C99 extensions, this change removes many pragma statements that suppress warnings about variadic macros and designated initializers. Designated initializers and Elvis operators have been introduced wherever appropriate.
2016-04-16 23:29:40 -07:00
Minh Nguyễn
f83c7a8b81 [ios] Force workspace-relative DerivedData
A workspace places derived data under ~/Library/ by default. We need it to live under build/ for all users. Instead of a legacy-style build products directory, force a workspace-relative DerivedData directory that matches the standard Xcode 4+ layout. Share the workspace settings file that forces the setting. Note that Xcode places its build and index output one level deeper than xcodebuild does.

Also fixed make ipackage-sim by conditionalizing anything related to the .dSYM file, which isn’t generated in the Debug configuration.
2016-04-16 22:46:26 -07:00