Commit Graph

86 Commits

Author SHA1 Message Date
Minh Nguyễn
45890ff674 [osx] Added stencil buffer option
Added an option to display the stencil buffer instead of the color buffer in osxapp.
2016-05-24 19:58:24 +03:00
Minh Nguyễn
2865e7d35c [ios, osx] Added wireframe debugging mask
Added an option to MGLMapDebugMaskOptions for the new wireframe debugging mode and UI in the demo applications for toggling it.
2016-05-23 11:51:05 +03:00
Minh Nguyễn
645dd25d0b [ios, osx] Fixed crash adding mixture of points and shapes
Fixes #5096.
2016-05-22 23:49:11 -07:00
Bruno de Oliveira Abinader
c13dd32242 [core] Added Viewport mode
Satisfies embedding platforms that requires the viewport coordinate
systems to be set according to its standards e.g. viewport mirrored
vertically.
2016-05-11 15:48:51 +03:00
Minh Nguyễn
1634058b51 [ios, osx] Reformatted documentation comments
Reformatted documentation comments in public headers in the OS X SDK and public headers shared between the iOS and OS X SDKs to wrap at column 80 and avoid excessive indentation that causes SourceKitten to detect code blocks.
2016-05-10 09:59:04 -07:00
Minh Nguyễn
b3d4a5cbf8 [ios, osx] Find nearby annotation when not persisting query
Fixed an issue that made the osxapp context menu only apply to the right-clicked pin after first selecting the pin. This also happened to be a latent bug in the iOS implementation.
2016-05-09 13:13:31 -07:00
Minh Nguyễn
e4d32b5cbe [osx] Removed two-finger tap zoom-out gesture
As in MapKit, a two-finger tap should be interpreted as a secondary click to open the context menu, if applicable. It should not zoom out; rather, a double-tap on a mouse should zoom out (“smart magnification”).
2016-05-09 13:11:03 -07:00
Minh Nguyễn
df1cae8d3a [osx] Exclude subviews from click gestures
Fixes #3418.
2016-05-09 00:17:22 -07:00
Minh Nguyễn
2ec95bc490 [ios, osx] Renamed version constant, linked to more info
Renamed MGLStyleCurrentVersion to MGLStyleDefaultVersion to emphasize the constant’s role as an indicator of the default version used by SDK classes, which may be behind depending on release schedules. In the documentation for each style URL method, include the actual version number instead of the constant. In unit tests, verify that this documentation is in sync with the constant.

Link each style URL method’s documentation to a forthcoming webpage on mapbox.com that describes the style in rich detail.
2016-05-06 11:06:52 -07:00
Minh Nguyễn
2a4eeadb29 [core, ios, osx] Version default style URL APIs; deprecated Emerald
Updated default styles from v8 to v9. Deprecated the MGLMapView class methods in favor of new methods that take a version parameter. Deprecated Emerald outright in favor of Outdoors. Replaced usage of the unversioned MGLStyle methods with the corresponding versioned methods and MGLStyleCurrentVersion to ensure consistency.

Expanded MGLStyle unit tests to also assert that MGLStyle has the right number of style URL methods and that they’re all public. Linked the OS X SDK unit test bundle to libmbgl-core.a. Removed an unnecessary dependency on osxapp.

Replaced Emerald with Outdoors in iosapp and osxapp.

Fixes the iOS and OS X side of #4577 and #4702.
2016-05-06 10:57:54 -07:00
Minh Nguyễn
d28b6f3719 [ios, osx] Avoid recomputing tile cache size on every redraw
The tile cache size is only recomputed when an input changes.

Fixes #4026.
2016-05-06 08:47:18 -07:00
Minh Nguyễn
8a7087af68 [osx] Display print dialog after drawing
Fixes #4956.
2016-05-06 08:11:50 -07:00
John Firebaugh
ce2a06e677 [core] Privatize math.hpp and vec.hpp 2016-05-05 11:16:57 -07:00
John Firebaugh
10e522d10b [core] Privatize various util headers (#4945) 2016-05-04 14:09:51 -07:00
Konstantin Käfer
4770a9eb21 [osx] make scrollwheel zooming smoother
- uses the same algorithm as the GLFW app to determine scrollwheel zoom speed
- disables transitions which makes the trackpad feel faster due to immediate response
2016-04-26 10:42:33 +02:00
Konstantin Käfer
f9bdaa9d3a [osx] disable touch events
they are canceling out trackpad scrolling events
2016-04-26 10:42:33 +02:00
Minh Nguyễn
95613bd7dd [ios, osx] Made OS X SDK localizable
Replaced the iOS-specific ilocalize make rule with a genstrings make rule that creates iOS, OS X, and shared strings files. Moved the override English .stringsdict file under darwin/resources/. Made the default OS X callout view XIB localizable. Made some hard-coded strings in the OS X SDK source localizable.
2016-04-24 16:18:23 -07:00
Minh Nguyễn
3e22369f27 [ios, osx] Eliminated platform/{ios,osx}/include
Also updated various project references to be group-relative, so Xcode chooses the right directory by default when adding a new file.

Fixes #4770.
2016-04-23 10:35:59 -07:00
Minh Nguyễn
2d32336a41 [osx] Moved resources one level up
Moved SDK resources to sdk/, by analogy with framework/ for iOS resources.

Moved the umbrella header into include/, for consistency with the iOS SDK.
2016-04-23 10:15:18 -07:00
Minh Nguyễn
df0d1187da [ios, osx] Fixed direction, pitch restoration
Followup to #4790. Fixed a regression preventing the direction and pitch from being persisted across sessions.
2016-04-22 17:09:25 -07:00
Minh Nguyễn
466ed55200 [core, ios, osx] cameraThatFitsCoordinateBounds
Added an API to get a camera that you can pass into -[MGLMapView setCamera:] that fits the given coordinate bounds, by analogy with -[MKMapView regionThatFits:] or -[MKMapView mapRectThatFits:edgePadding:].

Added mbgl::Map::getCameraOptions() for getting the current camera options more conveniently.
2016-04-22 16:39:25 -07:00
Minh Nguyễn
1039f21527 [ios, osx] Fixed dangling KVO observer crash
Fixed a crash when deallocating an MGLMapView that has point annotations. Now we explicitly remove all the annotations from the view and thus remove all remaining KVO observers on those annotations.

Fixes #4805.
2016-04-22 15:43:55 -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
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
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
6da746ac68 [osx] Fixed type mismatch and selector warnings
Fixed some issues that were obscured by the old gyp-generated build settings.
2016-04-16 22:47:26 -07:00
Minh Nguyễn
7a38e56819 [ios] Removed alternative to -ObjC
Xcode’s static library template comes with the -ObjC linker flag by default. Instead of removing that flag, this change removes the various imperfect workarounds we’ve been using to ensure that private SDK categories link. Given the size decrease in this static library since #2966 was fixed, we should have room to spare for the more straightforward approach. Moreover, an application that uses MGLMapView in a storyboard no longer needs to add -ObjC to the application target, which bloated the entire application, including other frameworks that had no need for -ObjC.

-ObjC isn’t even needed for dynamic frameworks, and the OS X SDK is only built as a dynamic framework.
2016-04-16 22:46:23 -07:00
John Firebaugh
204c7fee03 [core] Render from the main thread
Do not create a thread for the MapContext anymore.
2016-04-14 13:44:08 -07:00
Minh Nguyễn
24b4b1b514 [osx] Scroll to zoom
Added a hidden preference to MGLMapView that enables “unnatural zooming”, in which the scroll wheel zooms in and out, as in a Web browser, instead of scrolling the map, as is the platform convention on iOS and OS X.

Added a checkbox to osxapp’ preferences window that toggles this hidden preference via a binding. You can either use this checkbox or set the MGLScrollWheelZoomsMapView user default to YES.

Fixes #4670.
2016-04-12 09:27:28 -07:00
John Firebaugh
5eda74a514 Merge branch 'release-ios-3.2.0-android-4.0.0' 2016-03-30 17:43:37 -07:00
Minh Nguyễn
2a56565a9c [ios, osx] Wrap coordinates converted from points
ref #4444
2016-03-25 11:03:06 -07:00
Dan Wexler
429ea535e5 Reset the translation to zero without adjusting for view to fix non-zero frame origin bug. 2016-03-20 09:32:17 -07:00
Minh Nguyễn
b493bdc649 [ios, osx] Unified offline and ambient caches
There is now only one instance of mbgl::OfflineFileSource, created when the shared MGLOfflineStorage object is initialized. Also create and use the shared MGLOfflineStorage object when initializing an MGLMapView object. The unified cache file is located in a subdirectory of Application Support, where the SDK has control over the file’s lifetime. The subdirectory is already named after the host application’s bundle identifier, ensuring that each Mapbox-powered application has an independent tile limit. If there’s an ambient cache in a subdirectory of Caches, delete it. If there’s an offline cache in a subdirectory of Documents on iOS or Caches on OS X, move it to the unified cache location in a subdirectory of Application Support.

Fixes the iOS/OS X side of #4338.
2016-03-18 14:02:32 -07:00
Minh Nguyễn
e36218a866 [osx] Added OS X support for offline downloads 2016-03-10 17:08:58 -08:00
Minh Nguyễn
c2cd9335e9 [ios] Non-embedded static framework
Added a new ifabric Make target for packaging up a static framework similar to the one released as 3.0.1. Place artwork and certificate assets inside Mapbox.bundle inside Mapbox.framework. Link SystemConfiguration in the umbrella header.

Distinguish between the framework bundle and the resources bundle. For the dynamic frameworks and embedded static frameworks, the two are the same; for the non-embedded static framework, the latter resides inside the former.
2016-03-08 11:20:12 -08:00
Bruno de Oliveira Abinader
c17e954983 [android|ios|osx] Fix return type for pixelForLatLng 2016-03-01 20:58:54 +00:00
Bruno de Oliveira Abinader
4994b3dc57 [core] PrecisionPoint is now ScreenCoordinate 2016-03-01 20:58:54 +00:00
Minh Nguyễn
17f44d7bd9 Merge branch 'release-ios-v3.1.0' 2016-02-24 09:06:43 -08:00
Jason Wray
21ce6fbdf9 [osx] Set default polyline and polygon color to the selected menu item color
Fixes #3927
2016-02-18 19:27:49 -05: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
Konstantin Käfer
2f06ca74e2 [core] move platform/gl.hpp to gl/gl.hpp 2016-02-08 12:50:00 +01: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
Ansis Brammanis
b738087080 [osx] setMaximumZoomLevel, setMinimumZoomLevel
adds:
setMaximumZoomLevel
setMinimumZoomLevel

and makes `maximumZoomLevel` and `minimumZoomLevel` not readonly
2016-01-28 15:10:26 -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
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