Commit Graph

162 Commits

Author SHA1 Message Date
Minh Nguyễn
49bfdd662f [ios, osx] Optional peak altitude for flying 2015-12-20 04:11:14 -08:00
Minh Nguyễn
2cb70eac3c [ios, osx] Allow zero-duration flight
For consistency with -setCamera:…, a duration of 0 jumps instantaneously to the new location, while a negative value uses the distance-dependent default.

Due to the produced curve and applied easing, flyTo() doesn’t model a parabola or ballistic trajectory, but it does simulate powered flight to some extent.
2015-12-19 20:33:37 -08:00
John Firebaugh
110f1ec796 [ios, android] Add methods to remove a custom layer 2015-12-17 15:15:55 -08:00
Minh Nguyễn
bf89ed080b [ios] Renamed custom style layer invalidation method
Cf. -[UIView setNeedsDisplay] and -[MKOverlayRenderer setNeedsDisplay].
2015-12-16 16:15:28 -08:00
John Firebaugh
2ee52915fe [ios, android] Add a method to invalidate custom layers, forcing a repaint 2015-12-16 16:15:28 -08:00
Minh Nguyễn
304b4ec664 [ios] Silence undocumented typedef warnings from appledoc
ref #3203
2015-12-16 15:48:55 -08:00
Minh Nguyễn
350cafb903 Revert "Revert "[ios] Custom style layer""
This reverts commit 081e4e4451.
2015-12-16 15:48:55 -08:00
John Firebaugh
081e4e4451 Revert "[ios] Custom style layer"
ec9a4cd328
2015-12-16 14:05:54 -08:00
Minh Nguyễn
ec9a4cd328 [ios] Custom style layer
Exposed Map::addCustomLayer() publicly as an undocumented, block-based API. This change avoids the terms “layer”, “initialize”, “render”, and “altitude” because they overload existing terminology in the SDK, UIKit, or MapKit. (“Layer” is qualified as “style layer”.) There are outstanding questions about ARC memory management, but this approach works in both Objective-C and Swift for pure OpenGL programming.

Added a demo to iosapp that draws a green layer below any labels in Mapbox Streets.
2015-12-16 11:03:54 -08:00
Romain Quidet
b8be1f0632 code review updates: sprite_atlas brackets and nullable removed for reuseIdentifier of annotationImage 2015-12-15 16:36:17 -08:00
Romain Quidet
02a32b55e4 2210: MGLAnnotationImage image can be update 2015-12-15 16:36:17 -08:00
Minh Nguyễn
4e0e816653 [ios, osx] Added flyToCamera: variation that uses default duration 2015-12-15 12:52:13 -08:00
Minh Nguyễn
9aba820892 [ios, osx] Added flyTo to OS X; refactored camera setters 2015-12-15 12:52:13 -08:00
Minh Nguyễn
0fb2b855a4 [osx] Map camera
Shared MGLMapCamera between iOS and OS X. Unfortunately -camera and -setCamera: implementations need to be copy-pasted for now.
2015-12-13 17:26:53 -08:00
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
Adam Hunter
095a8be300 Implementation of flyTo. 2015-12-09 17:14:22 -08:00
Minh Nguyễn
265e56d056 Fixed linker warnings about overridden styleURL__
Reapplied #3097, which was originally applied to the release-ios-v3.0.0 branch but was omitted in a merge back to master.
2015-12-06 14:44:57 -08:00
Justin R. Miller
8d25d9ab1a Merge branch 'release-ios-v3.0.0' 2015-11-30 11:10:27 -08:00
Minh Nguyễn
4240dfb0a8 Updated links to access token manager
The old URL redirects to a Mapbox Studio page not specifically about access tokens.
2015-11-29 01:39:29 -08: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
c054441071 Fixed linker warnings about overridden styleURL__
Replaced #3088 with a better fix that relies on Interface Builder’s lack of support for conditional compilation.
2015-11-20 21:51:24 -08:00
Minh Nguyễn
06d400fb9a Discourage code usage of styleURL__ property
A hack atop the hack added in #2632. Pre-declare `styleURL__` with an attribute that prevents it from appearing in code completion suggestions, while leaving it available to Interface Builder, which is unable to parse attributes.
2015-11-20 12:03:16 -08:00
Minh Nguyễn
8a0bce7808 Discourage code usage of styleURL__ property
A hack atop the hack added in #2632. Pre-declare `styleURL__` with an attribute that prevents it from appearing in code completion suggestions, while leaving it available to Interface Builder, which is unable to parse attributes.
2015-11-20 11:31:46 -08:00
Minh Nguyễn
b791d1fb81 [iOS] Added missing documentation comment 2015-11-20 11:24:43 -08:00
Minh Nguyễn
94e2d8a02c [iOS] Added missing documentation comment 2015-11-20 01:02:21 -08:00
Jason Wray
3aa523c7b1 [ios] document willStart/didFinish map loading delegate methods
Fixes #2706
2015-11-18 15:59:48 -08:00
Jason Wray
9cbccb662e [ios] document willStart/didFinish map loading delegate methods
Fixes #2706
2015-11-18 10:23:54 -08: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
0a8d9a3b6d add IB additions to umbrella header to avoid framework warnings 2015-11-17 14:44:15 -08:00
Justin R. Miller
98462d4af8 add IB additions to umbrella header to avoid framework warnings 2015-11-17 14:43:58 -08:00
Minh Nguyễn
557b8afb7c [core][iOS] Source iOS styles from default_styles
Moved mbgl::util::default_styles to a more appropriate location, where iOS platform code can also find it. Moved -[MGLMapView bundledStyleURLs] (which is now deprecated) and the style switcher in iosapp to default_styles.

Added a collection of convenience methods for getting style URLs. It makes little sense to layer an enum atop this, as MapKit does, because MGLMapView styles aren’t limited to this set. A good analogy is UIColor. This also makes for a good entry point for future runtime styling APIs.

Introduced independent constants for each default style, because it’s more common to need access to a particular style than to iterate over them. This fact is apparent in the MGLStyle class, which now uses macros and assertions to ensure that it’s kept up-to-date with changes in default_styles.

/ref #1462
2015-10-30 13:09:37 -07:00
Minh Nguyễn
1e9cf71b5a IB inspectable for allowing tilt 2015-10-23 10:09:27 -07:00
Minh Nguyễn
4f509288b7 [iOS] Removed long-unavailable APIs 2015-10-22 14:27:58 -07:00
Minh Nguyễn
e3934df8d4 [iOS] Replaced styleID property with styleURL__ inspectable
The new styleURL__ inspectable property is carefully named to masquerade as a URL property in Interface Builder, even though IB supports no such thing.

If the user enters an invalid URL into the “Style URL” inspectable, throw an error instead of silently setting the style to the default. This check is not required in -setStyleURL:, which takes a real NSURL.
2015-10-22 14:27:39 -07:00
Justin R. Miller
24aa375cd1 [ios] tweaks to match code style for 1a5c452 callout tap handler 2015-10-12 11:02:04 -07:00
Maciej Swic
1a5c452fe3 Forwards the SMCalloutView tap delegate 2015-10-12 10:54:53 -07:00
Jason Wray
b406c942df [ios] update MGLMapView inline docs for v8 styles
Fixes #2503
2015-10-02 19:43:04 -04:00
Jason Wray
29da7bb26d [ios] describe radians↔degrees functions 2015-10-02 18:54:53 -04:00
Jason Wray
e565808de0 [ios] fix unintentional omission of delegate sections & methods from docs
Adds these delegate methods that were missing:
  - `mapView:annotation:calloutAccessoryControlTapped:`
  - `mapView:didSelectAnnotation:`
  - `mapView:didDeselectAnnotation:`

Adds these section headers that were missing:
  - Responding to Map Position Changes
  - Managing Annotations
  - Selecting Annotations

Also reorders the sections by priority and grouping.

Fixes #2514
2015-10-02 18:48:26 -04:00
Justin R. Miller
8cc3b12f1e [ios] fixes #2490: add annotation image enabled property 2015-10-02 11:50:53 -07:00
Justin R. Miller
7087a4c55a [ios] fixes #2491: document MGLAnnotationImage 2015-10-01 16:20:05 -07:00
Eric Horacek
50ad8ac54d Remove implicit conversion from double → float
Occurs when targeting a 32-bit architecture
2015-09-19 12:44:41 -07:00
Jason Wray
d9c7fdc565 [iOS] Fix MGLPolyline documentation typo 2015-09-11 16:34:10 -04:00
Jason Wray
c34d62aca2 [iOS] Move radians/degrees conversion functions to MGLGeometry.h 2015-09-11 11:36:32 -07:00
Minh Nguyễn
0a172a21fd CameraOptions
Plumbed camera options all the way through to MGLMapView. Added a method that lets you specify a direction in addition to center point and zoom level.

Added Map::jumpTo() for parity with mapbox-gl-js. Replaced usage of Map::setLatLng() and Map::setLatLngZoom() with Map::jumpTo() or Map::easeTo() within MGLMapView. Replaced MGLMapView.pitch with MGLMapCamera for setting all supported degrees of freedom simultaneously. Simultaneously move and rotate with course.

Support customizable timing functions on iOS.

iosapp now persists an archived MGLMapCamera instead of separate viewpoint properties and also synchronizes user defaults on termination. This change implements persistence entirely in Objective-C, eliminating the use of the Objective-C++ implementation.

Fixes #1643, fixes #1834. Ref #1581.
2015-09-07 09:22:52 -07:00
Justin R. Miller
163022f9a3 fix missing docs parameter 2015-09-04 09:16:26 -07:00
Justin R. Miller
790e8a345c refs #2039: add passthroughs for adding/removing overlays 2015-09-04 09:16:26 -07:00
Jason Wray
42dc5336db iOS perspective gesture support
Drag two fingers upward to tilt the map.

Implements #2116
2015-08-26 11:23:03 -07:00