Commit Graph

523 Commits

Author SHA1 Message Date
Minh Nguyễn
0cab7809eb [osx] Rewrote platform-osx and osxapp
platform-osx now vends a real NSView subclass, MGLMapView, that is readily embedded inside a Cocoa application for OS X. MGLMapView is backed by an NSOpenGLLayer for optimal performance and integration with other layer-backed views. It supports keyboard shortcuts and several gestures and hosts attribution, zooming, and rotation controls as subviews. osxapp is now a bona fide Cocoa application that embeds MGLMapView inside a XIB. osxapp has preferences and a share button for tight integration with custom styles.

Enabling asynchronous rendering would be more consistent with iOS but increases CPU usage so much, even when idle, that it isn’t worth any performance gain. The bigger issue is that VAOs aren’t being used.

make xpackage creates a static library similar to the one created by make ipackage. make clean cleans additional places where build output ends up.

The OS X minimum deployment target has been increased from 10.9 to 10.10. osxapp’s window has a full size content view, which requires 10.10. Lightweight generics require iOS 9+ and OS X 10.11 regardless, because it was only in that release that Foundation collection classes started adopting lightweight generics.

Shuffled files around and refactored annotations so that iOS and OS X share a good chunk of the annotations code, which now takes advantage of polymorphism. MGLMapView can now display annotations but cannot yet select them. In osxapp, a long press drops a pin, and so does the map view’s context menu.

Annotations have NSPopovers as callouts, and their view controllers can be customized. Annotation image alignment rects are respected for hit testing purposes and for positioning the callout anchor. Callouts in osxapp demonstrate the use of bindings to keep callouts in sync with underlying model objects.
2015-12-13 17:17:35 -08:00
Minh Nguyễn
b59f087ea8 [ios] Sort candidate annotations by proximity to tap
If you tap near a tight cluster of annotations, the annotation directly beneath your finger should be selected first. Previously, the annotations within the query bounds would be selected in order from oldest to newest, which was counterintuitive. The new behavior does sometimes make it more difficult to cycle through the entire cluster, but the previous behavior often got in the way anyways, as your finger would wind up atop a callout view for an annotation farther south.

Also updated the changelog.
2015-12-13 16:37:30 -08:00
Minh Nguyễn
d3275aa43c [ios] Refined annotation selection
Decreased hit test padding for annotation selection, since the query no longer depends on it. Fixed an assertion failure when selecting an annotation while the user dot is selected. Fixed an issue where selecting a selected user dot deselected it. Fixed an issue where the user dot’s callout positioning rect was off-center and a little too high.
2015-12-13 16:37:29 -08:00
Minh Nguyễn
a36054ee6b [ios] Refactored MGLMapView annotations
MGLMapView now maps “annotation tags” (Cocoa-speak for numeric annotation IDs) to context objects that pair annotations with their identifiers. Previously, MGLMapView mapped the annotation objects themselves to context objects that contained annotation IDs, but this caused most operations involving annotations to be rather expensive: since mbgl tracks annotations by ID, most of the time you know the ID and need either the annotation or some piece of metadata about it.

Along for the ride, geographic methods and support for alignment rect insets on annotation images have been ported from #3135 for OS X. Hit testing now works much like in #3135, with the exception that UIKit doesn’t support hit testing based on pixel opacity. -convertRect:toLatLngBoundsFromView: returns a world-spanning bounds when the world is wrapping.

Fixes #3159.
2015-12-13 16:37:29 -08:00
Adam Hunter
095a8be300 Implementation of flyTo. 2015-12-09 17:14:22 -08:00
Justin R. Miller
7beb051c26 Merge branch 'release-ios-v3.0.1' 2015-12-07 13:03:26 -08:00
Justin R. Miller
8fb141a3e4 bump build for ios-v3.0.1 (no symbols) 2015-12-07 12:21:22 -08:00
Justin R. Miller
860138dd38 record app fg/bg/inactive state in telemetry 2015-12-04 08:39:02 -08:00
Justin R. Miller
435cd9ea9e fixes #3113: bring in MGLMapView via +load for Interface Builder 2015-12-03 15:51:56 -08:00
Justin R. Miller
6b4e8bac6d fixes #3113: bring in MGLMapView via +load for Interface Builder 2015-12-03 15:43:53 -08:00
Justin R. Miller
0184b5ba9f bump iOS version to 3.0.1-pre.1 2015-12-03 11:15:42 -08:00
Jason Wray
f67ceec8c2 [ios] fix CoreTelephony crash (by removing it)
Fix #3112, ref #2581
2015-12-03 11:13:28 -08:00
Justin R. Miller
e2921f7e7c refs #3112: cleanups around Core Telephony runtime
- don't do anything with CT in simulator
 - more direct use of dynamic selectors for clarity
2015-12-03 11:12:15 -08:00
Jason Wray
e5f136a16a [ios] fix CoreTelephony crash (by removing it)
Fix #3112, ref #2581
2015-12-02 20:00:59 -05:00
Justin R. Miller
43ca910f54 refs #3112: cleanups around Core Telephony runtime
- don't do anything with CT in simulator
 - more direct use of dynamic selectors for clarity
2015-12-02 13:33:37 -08:00
John Firebaugh
8afa14fa78 [core] Map::setSprite ⇢ Map::addAnnotationIcon
Fixes #3084
2015-12-01 15:10:28 -08:00
Justin R. Miller
8d25d9ab1a Merge branch 'release-ios-v3.0.0' 2015-11-30 11:10:27 -08:00
Bruno de Oliveira Abinader
92856f394c [core] Collision debug is now MapDebugOptions::Collision 2015-11-27 17:47:02 +02:00
Bruno de Oliveira Abinader
1f0820c8e8 [core] Added MapDebugOptions
Map debug options are now cycled up to all debug options enabled, then
back to none.
2015-11-27 17:47:02 +02:00
Minh Nguyễn
2de0a351a0 [core] [iOS] Completion handlers for animated methods
Added transition frame and finish functions to CameraOptions. Added Objective-C equivalents to the three main entry points to easeTo() in MGLMapView.

Fixes #1581.
2015-11-25 15:20:25 -08:00
Minh Nguyễn
6916675e61 [iOS] Ensure consistent willChange/didChange notifications
Coalescing willChange/didChange notifications means keeping track of how many gestures are currently in progress; a boolean isn’t enough to track this state. This change refactors the gesture recognizers, making them more consistent with each other and more consistent in the case where more than one of them has fired. It also explicitly cancels transitions before all programmatic viewport-modifying methods, since mbgl only does so when animating.

Fixes #2313, fixes #2379, fixes #3062.
2015-11-25 14:39:32 -08:00
Minh Nguyễn
8ba6f80c1b Attach compass gesture recognizer to compass view
Fixes #3099.
2015-11-24 14:05:29 -08:00
Minh Nguyễn
f782f5eeb7 Attach compass gesture recognizer to compass view
Fixes #3099.
2015-11-24 12:11:10 -08:00
Minh Nguyễn
047107113f Updated guide URL 2015-11-23 19:17:20 -08:00
Justin R. Miller
6d4e86f41d bump podspec to 3.0.0 final (no symbols) 2015-11-23 17:03:54 -08:00
Justin R. Miller
6c74da947b bump iOS version to 3.0.0-rc.1 2015-11-23 11:17:45 -08:00
Justin R. Miller
24136b02e9 bump version to ios-v3.0.0-pre.10 2015-11-20 18:37:47 -08:00
Minh Nguyễn
c4558d48f2 [iOS] Set application root as asset root
As of #2746, we no longer bundle any styles with the SDK, so the asset: URL scheme is unused. Instead, point asset: to the application root for developer convenience and consistency with the Android and default asset roots. Also fixed an issue that prevented relative URLs from being treated as asset: URLs.

Fixes #1208, fixes #3050.
2015-11-20 11:20:35 -08:00
Minh Nguyễn
b3dbdb389f [iOS] Set application root as asset root
As of #2746, we no longer bundle any styles with the SDK, so the asset: URL scheme is unused. Instead, point asset: to the application root for developer convenience and consistency with the Android and default asset roots. Also fixed an issue that prevented relative URLs from being treated as asset: URLs.

Fixes #1208, fixes #3050.
2015-11-20 10:44:12 -08:00
Justin R. Miller
73daa180b6 bump version to ios-v3.0.0-pre.9 2015-11-18 18:43:12 -08:00
Justin R. Miller
a0533d8244 refs #2922: update display link in all common modes (inc. scrolling) 2015-11-18 18:27:46 -08:00
Justin R. Miller
35441a26e9 refs #2922: update display link in all common modes (inc. scrolling) 2015-11-18 18:00:12 -08:00
Minh Nguyễn
fd0e21321e Ensure proper will/is/didChange for resetNorth 2015-11-18 15:59:58 -08:00
Minh Nguyễn
fcec19b835 Ensure proper will/is/didChange for resetNorth 2015-11-18 11:27:17 -08:00
Bruno de Oliveira Abinader
cb9b397985 [core] Fix LatLngBounds default coordinates
LatLngBounds southwest and northeast coordinate points were inverted, so
they could be extended via LatLngBounds::extend(). However, this looks
confusing and error-prone.

A static LatLngBounds::getExtendable() is added to address cases when we
want to extend LatLngBounds.
2015-11-18 09:37:27 +02:00
Justin R. Miller
c4694df375 more clearly indicate Foundation imports to avoid recursion 2015-11-17 17:11:08 -08:00
Justin R. Miller
31354186a6 more clearly indicate Foundation imports to avoid recursion 2015-11-17 17:10:09 -08:00
Justin R. Miller
ea4575af68 bump version to ios-v3.0.0-pre.8
[skip ci]
2015-11-16 17:46:45 -08:00
Justin R. Miller
445145406f bump version to ios-v3.0.0-pre.7 2015-11-16 16:10:32 -08:00
Justin R. Miller
97502ee816 bump version to ios-v3.0.0-pre.7 2015-11-16 12:13:22 -08:00
Justin R. Miller
2a78b17698 provide resource bundle search for premade frameworks 2015-11-16 11:58:28 -08:00
Justin R. Miller
212e7a1e08 provide resource bundle search for premade frameworks 2015-11-16 11:40:54 -08:00
Justin R. Miller
8e6b9a0d96 bump iOS version to 3.0.0-pre.6
[skip ci]
2015-11-13 14:39:18 -08:00
John Firebaugh
1e350b7ea4 [core] Reorganize sprite related files 2015-11-12 13:03:14 -08:00
Minh Nguyễn
0dc1519a18 Set refresh interval to 60fps
Fixes #3005.
2015-11-12 12:00:47 -08:00
Minh Nguyễn
48d1c4025d [iOS] Removed unnecessary casts
Also renamed secondsAsDuration() to durationInSeconds(): function names should generally put the return type first, the argument type last, to avoid confusion.
2015-11-12 10:46:50 -08:00
Bruno de Oliveira Abinader
8b76f00d8c [core] PrecisionPoint is now a vec2<double>
We could reuse all the operators defined in vec2<>, including operator
bool() that checks if the contained values are !NaN.
2015-11-12 10:46:50 -08:00
Bruno de Oliveira Abinader
12e0e5eb04 [ios] Reflect Map API changes in MGLMapView 2015-11-11 16:59:49 +02:00
John Firebaugh
54e08b1f83 [core] Eliminate use of ClassProperties for paint 2015-11-10 11:33:17 -08:00
Justin R. Miller
f5a0586408 move from Fabric framework to bare headers per Twitter recommendation
Rolls back part of #2742
2015-11-09 17:35:43 -08:00