Commit Graph

826 Commits

Author SHA1 Message Date
Konstantin Käfer
bba3d9838a add Thread<T> and RunLoop
Thread<T> is a generic thread management object that starts a thread, creates an object T in that thread and calls its .start() function. When the Thread<T> object is destructed (which must happen in the thread that created it), it'll call the object's .stop() function, and wait for thread termination. The .stop() function must somehow get the thread to terminate. Note that object T's constructor/destructor/start()/stop() must be protected/private, and Thread<T> must be declared as a friend class. All public functions may be called from any thread and are exposed through operator->().

RunLoop encapsulates a libuv runloop and has a facility of dispatching function objects to the thread. It can be used either as a worker thread class by itself, or it can be derived from. This commit converts SQLiteCache to derive from RunLoop and removes the custom code used previously for managing the cache thread.
2015-04-10 15:36:32 +02:00
Brad Leege
19e4bc7541 #1247 - Adding Altitude and Vertical Accuracy attributes to location events 2015-04-09 18:08:15 -05:00
Konstantin Käfer
b47ebba2b9 Merge pull request #1071 from mapbox/1071-sqlite-avoid-crash
Gracefully handle SQLite errors
2015-04-08 16:48:58 +02:00
Konstantin Käfer
4b66c490b4 guard against invalid database files 2015-04-08 14:55:47 +02:00
Brad Leege
e86597011f #1216 - Added test usage of pausing / resuming Metrics to simulate app entering background mode and no other location manager running. Added paused state checking to pauseMetricsCollection and resumeMetricsCollection 2015-04-07 15:53:17 -05:00
Konstantin Käfer
7d58a41de5 make sqlite storage more resilient to sporadic errors
- catch SQLite exceptions and report them
- failed statements are ignored, we're really just caching here, so if it fails we're handling it gracefully elsewhere
- handle cases where the database file goes away after we opened it
- handle cases where the schema wasn't created after the database file was opened successfully
- add tests
2015-04-07 18:04:23 +02:00
Brad Leege
def309ba24 #1216 - Adding start and stop location manager update to pause and resume functions. 2015-04-06 23:15:00 -05:00
Brad Leege
4092e46982 #1216 - Add pause and resume methods with corresponding isPaused boolean flag property 2015-04-06 23:03:27 -05:00
Brad Leege
86d05d7ece #1217 - Changing date format to ISO 8601 2015-04-06 19:12:05 -05:00
Brad Leege
efdcdfb70d #1217 - Documenting why [NSTimeZone resetSystemTimeZone] is called 2015-04-06 17:51:24 -05:00
Brad Leege
67ce07cada #1217 - Changing date formatter to use device's system timezone and to give both timezone abbreviation as well as hour offset 2015-04-06 17:50:02 -05:00
Brad Leege
17ded82d87 #1215 - Refactoring cellularNetworkType and wifi to support nil data if no cell type or wifi is found. 2015-04-06 17:36:54 -05:00
Minh Nguyễn
760c0f0f19 Merge pull request #1214 from mapbox/1ec5-classes
Expose style class API publicly
2015-04-06 14:36:10 -07:00
Minh Nguyễn
a525038d14 Merge pull request #1211 from mapbox/1ec5-nil-token
Accept nil access token
2015-04-06 13:25:34 -07:00
Minh Nguyễn
af09fd599a Expose style class API publicly
Also added some convenience methods to match the underlying C++ API.
2015-04-06 12:26:26 -07:00
Brad Leege
2153cd29f7 #1212 - Distance filter to 10 and defaults for accuracy and automatic pause 2015-04-06 14:22:50 -05:00
Minh Nguyễn
a406f9121f Accept nil access token 2015-04-06 11:28:30 -07:00
Minh Nguyễn
87d9507854 Merge pull request #1204 from friedbunny/location-shadow
Smooth edges of user location annotation icon's shadow
2015-04-03 21:40:10 -07:00
Jason Wray
9cdd2b1c56 Smooth edges of user location annotation icon's shadow 2015-04-03 19:52:41 -07:00
Minh Nguyễn
d1fb43e371 Inspectable toggles
Added inspectables for toggling zooming, panning, rotating, and showing the user location for parity with `MKMapView`.
2015-04-03 12:41:38 -07:00
Justin R. Miller
6eb79338f3 allow setting nil mapID for default style 2015-04-03 12:41:37 -07:00
Justin R. Miller
2916ae2735 formatting & docs changes
Ran this through `./ios/docs/install_docs.sh` to double-check things.

 * Less-specific initializers above more-specific per Apple convention.
 * Shores up `accessToken` docs as property, not a method.
 * Edited comments for consistency and/or to keep them out of the docs.
2015-04-03 12:40:51 -07:00
Minh Nguyễn
836de8bc1c Made lat/lon/zoom inspectable
Declared these IB-specific inspectables in a separate category that developers are not expected to import. Currently these inspectables are order-dependent due to #1181.

Ref #929
2015-04-03 12:34:36 -07:00
Minh Nguyễn
da13225a81 Made MGLMapView designable in IB
When an access token is set in the Attributes inspector (or as a user-defined runtime attribute), we draw some lovely Mapbox branding so the view shows up. (Manipulating invisible rectangles is a frustrating exercise, I’m told.) In the absence of an access token, the view displays a helpful message with directions for obtaining and setting the access token.

Along the way, completely opt out of `MGLMapboxEvents` when targeting Interface Builder, because touching Core Location throws an exception in that environment and it doesn’t make sense to record any metrics when designing on the Interface Builder canvas. Also, don’t start `mbgl::Map` at all (and don’t update it) because none of the runtime drawing code should ever be run in the designable. Normally these chunks of code would be excluded in IB using the TARGET_INTERFACE_BUILDER preprocessor macro. However, Mapbox GL is being packaged as a static library, so the macro is only evaluated when the library is prebuilt, even if the library eventually makes its way into the CocoaPods-generated framework. Instead, we detect that we’re being run by the IBDesignablesAgentCocoaTouch process.

Overrode `-[MGLMapView initWithFrame:]` to call `-commonInit`. We’ve marked this initializer unavailable in the header, but IB still calls it regardless.

Fixes #929.
2015-04-03 12:16:00 -07:00
Minh Nguyễn
e18e4b0de5 Removed redundant initializers and setters
This change removes most of the ways you used to be able to apply a style to the map. Building on #1163, `styleURL` (HTTP(S), mapbox:, asset:) is the canonical way to apply a style, and `mapID` is a convenient shorthand for Mapbox-hosted styles. A relative style URL is interpreted as a path relative to the app’s main bundle. We now construct asset: URLs in lieu of “bundled style names”.
2015-04-03 12:14:51 -07:00
Minh Nguyễn
6a1e7d5707 Fixed race condition after setting access token
`Map` should be able to deal with having no access token or JSON even while it’s running. Most of `Map` accounts for this situation, but `reloadStyle()` incorrectly assumes that one or the other is set. This change corrects the assumption in `reloadStyle()`.

Also expose the access token and style name to clients as ordinary KVO-compliant properties. Actually, they’re not so ordinary because they’re inspectable!

Ref #1070, #1147
2015-04-03 12:07:53 -07:00
Justin R. Miller
999ebb371e Merge pull request #1194 from mapbox/fix-lat-lon-zoom-order
fixes #1181: fix lat/lng & zoom ordering problems
2015-04-03 09:38:47 -07:00
Brad Leege
8413da0d68 #1195 - Adding speed and course attributes to location event 2015-04-03 11:10:35 -05:00
Justin R. Miller
c253232473 account for GL-level min zoom 2015-04-03 09:06:20 -07:00
Justin R. Miller
0a736c3a76 fixes #1181: fix lat/lng & zoom ordering problems 2015-04-02 19:56:47 -07:00
Justin R. Miller
540ef12b4e fix compilation error with private category property 2015-04-02 19:28:37 -07:00
Justin R. Miller
dafce83acd Merge pull request #1192 from mapbox/location-and-docs-tweaks
improvements to iOS docs & user location framework
2015-04-02 17:50:32 -07:00
Justin R. Miller
dbd22ae61a reverting to title/subtitle setters for user location 2015-04-02 17:12:05 -07:00
Justin R. Miller
9a416c449c Improvements to docs & user location framework.
* Cleans up & documents more APIs, especially in location.
 * Moves `coordinate` internal and makes use of `location` to retrieve it.
 * Moves `title` & `subtitle` internal since part of `MGLAnnotation` protocol.
 * Enables `isUpdating` by privately associating weakly with a map view.
2015-04-02 16:58:24 -07:00
John Firebaugh
12c07b916b Rework easing transition code
This brings the easing transition code a bit closer to how easings work
in gl-js. Instead of having an array of individual transitions for scale,
rotate, and pan, there is a single transition function that does all the
required calculations. This permits us to:

* Eliminate the "timeout" transition. (Fixes #126)
* Replace start/stopPanning() et al with setGestureInProgress(). Apps or
  SDKs are expected to make paired calls to setGestureInProgress(). This
  state will be ORed with the active easing state to determine when to
  use texture interpolation. (Fixes #79)
* Run style recalculations only when an ease transition that affects the
  zoom is in progress. (Fixes #1155)
2015-04-02 16:12:29 -07:00
Brad Leege
94bc3c811f #1185 - Adding "events=true" query string to all non metrics http requests if metrics are not disabled 2015-04-02 16:15:25 -05:00
Brad Leege
418c802d97 #1178 - Changing "Location" to "location" 2015-04-02 10:34:35 -05:00
John Firebaugh
9331acf8e6 Add typedefs for std::chrono::steady_clock types 2015-04-02 12:28:12 +02:00
Brad Leege
adcbf48ff5 #1162 - Adding appBundleId as an event attribute 2015-03-31 09:46:28 -05:00
Justin R. Miller
33f14328c4 move to actual NSURL type 2015-03-30 22:30:06 -07:00
Justin R. Miller
2782a8ce5b refs #892: Cocoa support for map ID style URLs 2015-03-30 22:09:47 -07:00
Justin R. Miller
a8833c34d4 fixes #892: support mapbox:// style URLs 2015-03-30 15:33:02 -07:00
Minh Nguyễn
3ed1e7a695 Merge pull request #1149 from mapbox/1ec5-subview
Child GLKView should be bottommost child
2015-03-30 10:52:15 -07:00
Justin R. Miller
ac3ba85120 refs #1125: user dot improvements
* more quickly unhide dot when nearing viewport
* improvements to maintaining user tracking mode during tap zooms
* removed a redundant layer hide
* better at ignoring bad location data
* be sure to use existing coordinate utilities
2015-03-27 19:45:58 -07:00
Brad Leege
a325cb98b5 #1134 - Removing enabled.email metric and supporting infrastructure 2015-03-27 19:25:59 -05:00
Minh Nguyễn
653724e68d Child GLKView should be bottommost child
Otherwise, any subviews added to an MGLMapView in a XIB or storyboard are completely obscured by the GLKView.
2015-03-27 16:34:11 -07:00
Brad Leege
2f92fa9125 #1144 - Removing conversion of (char)0 and (char)1 to false and true strings 2015-03-27 15:03:02 -05:00
Justin R. Miller
215a7c4b2b only recognize the end state of single taps 2015-03-27 11:12:50 -07:00
Justin R. Miller
2822dd5b62 track metrics for gestures once upon begin 2015-03-27 11:06:04 -07:00
Brad Leege
caf970eab7 Merge pull request #1138 from mapbox/1124-both-ids-take-2
Resplitting anonid into advertiserId and vendorId
2015-03-27 12:49:28 -05:00