Commit Graph

1553 Commits

Author SHA1 Message Date
Minh Nguyễn
0bb2e05063 weakSelf needs strongSelf
The `weakSelf` dance requires the use of a `strongSelf` in non-trivial blocks. In these cases, `weakSelf` could disappear right out from under the block. A crash could potentially occur due to setting a `nil` value in an `NSMutableDictionary`.
2015-04-18 23:28:51 -07:00
Minh Nguyễn
261b6161f2 Cancel animations on touch down
Cancel any map animations as soon as a finger is set upon the screen.

Fixes #1258.
2015-04-18 23:01:42 -07:00
Minh Nguyễn
fae0c4c8b3 Simplified math for drift-rotation
fmodf() would conflict with the fix for #1199.
2015-04-18 22:02:15 -07:00
Minh Nguyễn
33aeecef22 Added drift-rotation effect after rotation gesture 2015-04-18 20:50:35 -07:00
Minh Nguyễn
41d28e7203 Added drift-zooming effect after pinch gesture
Apply a subtle animated zoom after a pinch gesture completes. Lots of magic numbers involved. Avoid drifting when the pinch is near-static, and when the scale factor would go below the minimum. There is more resistance to pinching outward than pinching inward, because it’s far easier to lose your place when you accidentally zoom out. Disabled two-finger pan, which is typically reserved for changing pitch; otherwise, it’s easy to accidentally pan while intending to pinch.
2015-04-18 19:47:52 -07:00
Minh Nguyễn
4c6987b20e Apply some friction to pan drift
When the panning velocity is low enough, ignore the pan gesture to simulate friction on the device’s glass screen.
2015-04-18 19:40:26 -07:00
Minh Nguyễn
2bc63f76a4 Made pan gestures slipperier
Replaced the complex formula for overpanning with a simple one that makes the map feel much slipperier than before. `MGLMapView` now overpans just a little more aggressively than `MKMapView` but still a lot less aggressively than Google Maps.

Fixes #1266.
2015-04-17 12:31:49 -07:00
Konstantin Käfer
46bf226910 align static render mode and still image render mode
- static rendering now also runs in a separate thread; you have to start it with map.start(Map::Mode::Static) and join the thread with map.stop() before destructing the Map object
- map.renderStill() takes a callback with will be invoked on the *map* thread, so you'll have to figure out your own method of dispatching back to the main thread.
2015-04-17 13:40:42 +02:00
Justin R. Miller
b6e2052962 refs #1285: don't use special getters for dot syntax 2015-04-16 15:16:11 -07:00
Justin R. Miller
a28bd361d8 fixes #1276: maintain snapshot in hierarchy & hide when appropriate 2015-04-16 14:04:37 -07:00
John Firebaugh
7000a4faf0 Merge pull request #1250 from mapbox/1250-separate-thread-object
Separate objects from Thread management
2015-04-16 08:50:24 -07:00
Justin R. Miller
190709c6b1 fixes #1157, #1255: cache parsed tiles in memory 2015-04-16 01:15:41 -07:00
John Firebaugh
5fa0512be2 Shorten method names 2015-04-15 20:38:25 -07:00
John Firebaugh
1eaf6b8c18 Stricter Thread<> interface
Implements a Thread<>::invoke interface that only permits calling
member functions with bound arguments.

Also introduce invokeWithResult, which accepts a callback and invokes
it, passing the result, on the invoking thread's RunLoop. This closes
the loop of two evented threads doing message passing.
2015-04-15 20:38:25 -07:00
Minh Nguyễn
ed74c6e23d Merge pull request #1254 from mapbox/1050-bg
Detach GLKView while app is in background
2015-04-15 13:22:04 -07:00
Minh Nguyễn
ec987ca434 Assert that snapshot view obscures GL view when it exists
Just in case the host app mucks around with `MGLView`’s internal view hierarchy.
2015-04-15 10:18:15 -07:00
Brad Leege
074687e732 #1271 - Changing "new" to "alloc init" 2015-04-15 09:39:00 -05:00
Minh Nguyễn
e19b6afb26 Leave GLKView in place, obscured by snapshot
Generate the snapshot using `-[UIView snapshotViewAfterScreenUpdates:]` and place it _over_ the `GLKView`. UIKit appears to be able to detect that the `GLKView` is completely obscured and avoids `-_display`ing it.
2015-04-14 22:23:13 -07:00
Brad Leege
21685caa2a #1268 - Adding horizontalAccuracy to location event 2015-04-14 18:03:59 -05:00
Konstantin Käfer
1066504008 separate SQLiteCache::Impl header from implementation file 2015-04-13 18:38:39 +02:00
Konstantin Käfer
352ff64e06 rename SQLiteCache::Thread to SQLiteCache::Impl 2015-04-13 18:32:59 +02:00
Konstantin Käfer
452d12e6e6 make implementation files private headers 2015-04-13 18:28:18 +02:00
Konstantin Käfer
16849a341b hide Thread<> and separate the Implementation object 2015-04-13 17:57:45 +02:00
Justin R. Miller
32e5196373 change default style to Streets 2015-04-10 16:38:49 -07:00
Minh Nguyễn
c5b0478e9a Detach GLKView while app is in background
Throw a static snapshot up for the app switcher. Hope you didn’t plan on moving markers around while the app is in the background.

Fixes #1050, #1186, #1203, #1243.
2015-04-10 14:29:18 -07:00
Brad Leege
22a35c23be #1252 - Merging 2 "created" attribute value setting attempts into 1 2015-04-10 15:53:07 -05:00
Konstantin Käfer
4c7132337f convert DefaultFileSource to use util::Thread<> 2015-04-10 22:37:27 +02:00
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