Commit Graph

658 Commits

Author SHA1 Message Date
Minh Nguyễn
73430aed38 [ios] Moved static include file
This file was originally added on the release-ios-v3.1.0 branch, before #3913 merged ios/ into platform/ios/. When the release branch was merged back into master in 17f44d7bd9, the file was left in the old ios/ directory.
2016-02-27 13:43:39 -08:00
Jesse Bounds
09c9100891 Introduce MGLLocation Manager
https://github.com/mapbox/mapbox-gl-native/pull/4115

This change makes background data gathering more efficient by disabling
standard location updates when the device has been stationary for at
least five minutes. It also establishes region monitoring and
significant location change monitoring so that if the device appears to
be in motion again then background telemetry data collection can resume.
All of this reduces the amount of time required for telemetry data
collection to the time the device is in motion only. It also only
applies to host apps that already run in the background and have the
always location permission from their users.

This also includes some changes to make the internal pause/resume API of
the MGLMapboxEvents class less complex and autonomous. The side effects
of the map view waking or sleeping are no longer required for mapbox
events to work as intended.
2016-02-26 14:19:04 -08:00
Minh Nguyễn
fe7b52e792 [ios] Clarified schemes and destinations 2016-02-26 10:23:40 -08:00
Jesse Bounds
9a97a4d34f [ios] Introduce API Client
Addresses https://github.com/mapbox/mapbox-gl-native/issues/3704

This introduces a new utility class that wraps networking via
NSURLSession. All related code that used to live inside the telemetry
MGLMapboxEvents class has been pulled into the new MGLAPIClient.
An API client instance is used as a service by telemetry and can be
reused in the future when and if our networking needs grow or become
more complex.
2016-02-24 14:45:42 -08:00
Minh Nguyễn
d8c066ce0a [ios] Deleted redundant certificates
These certificates were copied to platform/default/resources/ in 4719b73ac7 but remained here, producing build warnings about duplicate build rules.
2016-02-24 12:24:08 -08:00
Jesse Bounds
f3ff38d125 [ios] Reduce async complexity 2016-02-24 09:32:26 -08:00
Minh Nguyễn
17f44d7bd9 Merge branch 'release-ios-v3.1.0' 2016-02-24 09:06:43 -08:00
Konstantin Käfer
662edea020 [ios] fix benchmark app 2016-02-24 16:49:05 +01:00
Minh Nguyễn
7bed2cebd2 [ios] Restored framework dependencies to static installation instructions
Backed out documentation about #4029 because it doesn’t apply when using a storyboard, and the installation instructions use a storyboard.
2016-02-22 10:44:49 -08:00
Minh Nguyễn
d836638407 [ios] Fixed zoom level for map feedback tool
The map feedback tool uses mapbox.js, so its zoom levels are one off the zoom levels used by Mapbox GL.
2016-02-22 09:44:43 -08:00
Jason Wray
15b9f3171a [ios] Refactor MGLMapView's location services
- Pause location services when the app goes to sleep; address iOS 8 blue bar issue.
- Only ask for location permissions if not already granted/denied.
- Cleanup usage of `.isDormant` → `.dormant`

Partially addresses #2945, for which a full and complete fix waits until #4030.
2016-02-19 13:14:54 -05:00
Jason Wray
390057b569 [ios] Set default polyline and polygon color to the map view tint color
Fixes #3927
2016-02-18 19:23:15 -05:00
Minh Nguyễn
9f4e8dd676 [ios] Removed manual framework linking from installation instructions
Even these three are no longer needed, now that the umbrella header pulls them in.
2016-02-18 14:51:51 -08:00
Minh Nguyễn
1c25dc098e [ios] Import required frameworks with static framework umbrella
The umbrella header inside the static framework now imports the required iOS SDK frameworks so manual linking is unnecessary. This change corrects a regression introduced in #3183, when the umbrella header used in version 3.0.1 was removed.
2016-02-18 14:41:47 -08:00
Minh Nguyễn
a57a88a038 [ios] Clarified manual installation instructions
People are used to dragging frameworks into the Linked Frameworks and Libraries section, but the SDK only works when embedded inside the application.

Fixes #4011.
2016-02-18 13:26:54 -08:00
Bruno de Oliveira Abinader
d900e7a9a3 [tests] Bumped KIF hash
Commit 766ff59663f19222993ed32e5be36894bcb6949d removes a generated
.gcda file that prevents proper lcov usage.
2016-02-18 15:01:58 +02:00
Jesse Bounds
9891d0eb79 [iOS] Generate and send a turnstile event when map view event is queued
This change adds logic to push a turnstile event whenever a map view
event is queued. It guards against sending the turnstile event more
than once per session.

Note that `pushTurnstileEvent` is actually a "force push" in that it
flushes the queue and, since it enqueues a turnstile event, the
flush's call to `postEvents` will attempt to send any queued events
even if telemetry is paused. This has the side effect of defeating
the other queue / timing / flush logic in place whenever map load
(and now implicitly turnstile) events are pushed.
2016-02-15 11:35:07 -08:00
Minh Nguyễn
55fca26ea5 [ios] Distinguish between AGV and semver
Distinguish between Apple Generic Versioning and Semantic Versioning in Info.plist. Also fill in the build number in the dynamic framework.

Fixes #3911.
2016-02-13 09:56:44 -08:00
Jason Wray
f37093e108 [ios] Fix screenshot link
[skip ci]
2016-02-12 19:37:52 -08:00
Jason Wray
c5e3b20891 [ios] Update linked library extension to .tbd
[skip ci]
2016-02-12 15:56:12 -08:00
John Firebaugh
13e2acbc75 [ios, osx] Consolidate remaining files in platform/{ios,osx} 2016-02-12 14:53:52 -08:00
Minh Nguyễn
51d7d204db [ios, osx] Exclude misses from nearby annotations
After filtering out elements of a vector using std::remove_if(), it’s apparently necessary to resize the vector. Otherwise, removing only has the effect of shifting the non-matching items to the end of the vector. This change reduces the annotation tap target back to almost what it was before #3261, except that these days the target is centered around the annotation image rather than the center point. There remains a much smaller slop area around the annotation, but nothing close to the effective padding before this change.

Fixes #3880.
2016-02-10 22:02:46 -08:00
Minh Nguyễn
bd59ab9a52 [core, ios, osx] Only constrain after adding to a window
Introduced a setter/getter for constrain mode. On iOS and OS X, the zoom level inspectable causes the zoom level to be set independently from the longitude and latitude. Thus, the latitude inspectable had no effect because the latitude was constrained to 0 at z0. Temporarily removing the heightwise constraint allows the map to center on the intended location before zooming, which is the usual case for storyboards and XIBs. On iOS, the only guarantee we have timing-wise is that all the inspectables are applied after initialization but before the view is added to a window. So we reimpose the heightwise constraint as soon as the view is added to a window, that is, before the user has a chance to pan the map out of bounds.

Fixes #3868.
2016-02-10 15:15:29 -08:00
Minh Nguyễn
71611ec612 [ios, osx] Fixed crash reselecting annotation
Handle the case where the currently selected annotation isn’t one of the nearby annotations. This hasn’t come up before on OS X because clicking an annotation while another annotation is selected only dismisses the callout popover.

Fixes #3284.
2016-02-10 09:38:04 -08:00
Minh Nguyễn
2080d19764 [ios] Conform to SMCalloutViewDelegate
#3322 #3456 replaced SMCalloutViewDelegate conformance with MGLCalloutViewDelegate conformance. Unfortunately, the two protocols differ in some symbols. This change restores SMCalloutViewDelegate methods alongside MGLCalloutViewDelegate methods.

Fixes #3871.
2016-02-09 23:56:25 -08:00
Minh Nguyễn
35fdf32de5 [ios] Load categories in MGLAccountManager for Fabric
These categories need to be loaded explicitly so that they’re linked into the application binary. In the dynamic framework, they’re loaded inside the InitializeMapbox() framework initializer; for static frameworks, we recommend setting the -ObjC flag. Fabric uses the static framework without setting the -ObjC flag, so these redundant calls are needed.
2016-02-09 14:56:01 -08:00
Konstantin Käfer
2f06ca74e2 [core] move platform/gl.hpp to gl/gl.hpp 2016-02-08 12:50:00 +01:00
Jordan Moncharmont
48dbd48e77 [ios] Explain prerelease testing in docs
Show how to point a podspec at an officially tagged pre-release.
2016-02-04 14:48:01 -08:00
Minh Nguyễn
e8b8f5e493 [ios] Fixed designable warning when showing user location
Turn the Shows User Location inspectable into a no-op when running in the designables agent. Otherwise, we complain that the agent lacks Location Services permissions.
2016-02-03 11:14:09 -08:00
John Firebaugh
37c27f3a8f [core] Improve LatLngBounds API
* Use "named constructors": empty, world, hull
* Make the two-argument constructor lenient (i.e., it is a hull operation)
* Add various accessors
* Enforce a single empty representation
2016-02-02 23:04:18 -08:00
Minh Nguyễn
7694eebe88 [ios] Renamed -showAnnotations:withEdgeInsets:animated:
Renamed -showAnnotations:withEdgeInsets:animated: to -showAnnotations:edgePadding:animated: for consistency with other methods. Reworded documentation comments to avoid hard-coding too many specifics that are prone to getting outdated.
2016-02-01 20:55:55 -08:00
Jordan Moncharmont
909832624e Custom edgeInsets for fitting in showAnnotations
Keeps sensible defaults already in place, but allows callers to override.
2016-02-01 20:55:55 -08:00
Minh Nguyễn
710398b780 [ios] Removed redundant usage section
Also copied some further setup steps from the IB page on the project wiki.
2016-01-28 23:38:21 -08:00
Minh Nguyễn
6995452541 [ios] Restored toggleDebug
Restored (but deprecated) a method removed in #3100 to avoid a major version bump.
2016-01-28 22:36:58 -08:00
Minh Nguyễn
6b3b3f3ff6 [ios] Debug mask
Ported MGLMapDebugMaskOptions from the OS X SDK. Deprecated debugActive and -cycleDebugOptions.
2016-01-28 22:23:07 -08:00
Minh Nguyễn
8cdd02bc8f [ios] Eliminated “flashlight mode”
Avoid resetting user tracking state when going from location or course tracking mode to heading tracking mode.

Fixes #3710.
2016-01-28 17:57:44 -08:00
Ansis Brammanis
371a210be8 [ios] getters, setters for minZoom, maxZoom
adds:
minimumZoomLevel
setMinimumZoomLevel
maximumZoomLevel
setMaximumZoomLevel
2016-01-28 15:10:26 -08:00
Minh Nguyễn
eeeec862a2 [ios] Remove dependency on variable in package.sh
Fixes #3725.
2016-01-28 08:49:51 -08:00
Jesse Bounds
fab847c128 [ios] Remove incorrect tab whitespace in method
This just removes some whitespace that made the implementation of
`pushTurnstileEvent` in `MGLMapboxEvents` look a little strange.

The indentation was right below an early return conditional
(with no braces) so it felt like the right thing to do (for
readability) to clean it up. Choosing and enforcing a consistent style
for conditionals with one line might be a good idea, too, but this
small change does not go there.
2016-01-27 13:46:31 -08:00
Minh Nguyễn
a5283b5798 [ios] Update location after clearing target coordinate 2016-01-26 22:59:27 -08:00
Minh Nguyễn
8a23bdcd01 [core, ios, osx] Tilt around visual center point
The tilt gesture on both iOS and OS X now respects the content insets. On iOS, in user tracking mode, it additionally respects the user dot’s position if it’s aligned to the top or bottom of the view.
2016-01-26 18:49:01 -08:00
Minh Nguyễn
97fc2120c4 [ios] Fixed entering tracking mode at launch
Entering user tracking mode at launch now zooms in and shows the user dot or user puck. The user dot’s heading indicator now points in the correct direction during the animation to the initial location. Course changes are reflected immediately even in the absence of location changes.

Fixes #1145.
2016-01-26 18:48:56 -08:00
Minh Nguyễn
14c052f5ce [ios] Refactored location updates
Broke out -locationManager:didUpdateLocations:animated: into multiple self-contained methods, simplifying the logic considerably.

Eliminated a jump after device rotation in non-centered tracking mode.
2016-01-26 17:19:23 -08:00
Minh Nguyễn
7057a1bb4a [ios] Bifocal viewport in course tracking mode
When a targetCoordinate is specified in course tracking mode, the map automatically resizes the viewport to show both the user puck and the target, one at the top and the other at the bottom. The user puck now rotates its arrow in the course direction, no longer assuming that the viewport is facing the same way as the course.
2016-01-26 17:19:22 -08:00
Minh Nguyễn
c5017652b9 [ios] Turn map around when user dot is top-aligned
Also fixed top- and bottom-aligned user dot center points to account for the content inset’s offset within the map view bounds.
2016-01-26 17:19:22 -08:00
Minh Nguyễn
9b694058b0 [ios] Avoid jumping when setting user tracking mode
Account for the user dot’s alignment when flying to the initial user location. Previously, during incremental location updates, we relied on a hack in which the edge insets resulted in a 0×0 viewport, forcing the center upward or downward. But flyTo() relies on the viewport’s size to control the trajectory. So instead, all location updates now use a correctly-sized viewport centered on the offset user dot.

Pushed the user dot farther away from the view edges.

Programmatic rotation and compass rotation are now centered on the user dot even if it’s aligned at the top or bottom. Previously, pressing the compass would trigger a rotation centered on the center of the view.
2016-01-26 17:18:26 -08:00
Minh Nguyễn
87f0174967 [ios] Various user tracking mode fixes
Setting the user tracking mode without animation now works. Previously, it kept the user dot from ever updating.

Just as a zoom gesture no longer kicks the user out of user tracking mode, programmatically zooming shouldn’t either.

Setting a camera with an invalid center coordinate no longer attempts to change the center coordinate but still changes any other valid properties.

Made animation to new user dot vertical alignment optional.
2016-01-26 17:17:25 -08:00
Jason Wray
9418f9a987 [ios] Avoid the blue background location status bar
Apps with `whenInUse` location permission will show a blue status bar
when they continue to use location services after leaving the
foreground. This is worrying and to be avoided, so let's disable telemetry
location services in this situation.

Fixes #2945
2016-01-25 14:59:38 -05:00
Bruno de Oliveira Abinader
2f86467586 Cleanup std::chrono usage
Use mbgl::Duration and mbgl::{,Milli}Seconds whenever possible.
2016-01-25 15:11:18 +02:00
Minh Nguyễn
cc47da5a15 [ios] Allow removing never-added annotations
https://github.com/mapbox/mapbox-gl-native/issues/3159#issuecomment-174422048
2016-01-24 23:19:15 -08:00