From 2dae2254dd2a4e9ac4dbf0517ec758b2e2fcccb3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Mon, 16 Jan 2017 21:50:08 -0800 Subject: [macos] Check for implementation before calling -toolTip Also fixed a couple typos in changelogs. --- platform/ios/CHANGELOG.md | 4 ++-- platform/macos/CHANGELOG.md | 3 ++- platform/macos/src/MGLMapView.mm | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/platform/ios/CHANGELOG.md b/platform/ios/CHANGELOG.md index 0d11a923a8..0e28bf153d 100644 --- a/platform/ios/CHANGELOG.md +++ b/platform/ios/CHANGELOG.md @@ -49,7 +49,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT ### Annotations * Added new methods to MGLMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) -* Added new APIs to MGLMapView to query for visible annotations. Combined with `-[MGLMapView viewForAnnotation:]`, these APIs can be used to access all visible annotation views. ([6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) +* Added new APIs to MGLMapView to query for visible annotations. Combined with `-[MGLMapView viewForAnnotation:]`, these APIs can be used to access all visible annotation views. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) * Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) * Fixed an issue causing offscreen annotation views to be updated even when they were in the reuse queue. ([#5987](https://github.com/mapbox/mapbox-gl-native/pull/5987)) * Fixed an issue preventing MGLAnnotationView from animating when its coordinate changes. ([#6215](https://github.com/mapbox/mapbox-gl-native/pull/6215)) @@ -253,7 +253,7 @@ Mapbox welcomes participation and contributions from everyone. Please read [CONT - Heading or course tracking mode can now be enabled as soon as an MGLMapView is initialized. ([#3680](https://github.com/mapbox/mapbox-gl-native/pull/3680)) - Zooming and rotation gestures no longer disable user tracking mode. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) - User tracking mode starts out at a lower zoom level by default. ([#3589](https://github.com/mapbox/mapbox-gl-native/pull/3589)) -- Fixed an issue with small map views not properly fitting annotations within bounds. (#[3407](https://github.com/mapbox/mapbox-gl-native/pull/3407)) +- Fixed an issue with small map views not properly fitting annotations within bounds. ([#3407](https://github.com/mapbox/mapbox-gl-native/pull/3407)) - When the user rotates the map to within 7° of true north, the map view now snaps to true north. ([#3403](https://github.com/mapbox/mapbox-gl-native/pull/3403)) - The map view’s background can now be transparent or translucent, as long as the style’s background layer is transparent or translucent and `MGLMapView.opaque` is set to `NO`. ([#3096](https://github.com/mapbox/mapbox-gl-native/pull/3096)) - Documentation is now generated by [jazzy](https://github.com/realm/jazzy) instead of appledoc. ♪♫ ([#3203](https://github.com/mapbox/mapbox-gl-native/pull/3203)) diff --git a/platform/macos/CHANGELOG.md b/platform/macos/CHANGELOG.md index bc15b4667e..d2f5d1ccab 100644 --- a/platform/macos/CHANGELOG.md +++ b/platform/macos/CHANGELOG.md @@ -37,7 +37,8 @@ This version of the Mapbox macOS SDK corresponds to version 3.4.0 of the Mapbox * Added `showAnnotations:animated:` and `showAnnotations:edgePadding:animated:`, which moves the map viewport to show the specified annotations. ([#5749](https://github.com/mapbox/mapbox-gl-native/pull/5749)) * Added new methods to MGLMultiPoint for changing the vertices along a polyline annotation or the exterior of a polygon annotation. ([#6565](https://github.com/mapbox/mapbox-gl-native/pull/6565)) -* Added new APIs to MGLMapView to query for visible annotations. ([6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) +* Fixed an exception raised when adding a custom annotation model object to MGLMapView. ([#7746](https://github.com/mapbox/mapbox-gl-native/pull/7746)) +* Added new APIs to MGLMapView to query for visible annotations. ([#6061](https://github.com/mapbox/mapbox-gl-native/pull/6061)) * Shape, feature, and annotation classes now conform to NSSecureCoding. ([#6559](https://github.com/mapbox/mapbox-gl-native/pull/6559)) * Various method arguments that are represented as C arrays of `CLLocationCoordinate2D` instances have been marked `const` to streamline bridging to Swift. ([#7215](https://github.com/mapbox/mapbox-gl-native/pull/7215)) * To make an MGLPolyline or MGLPolygon span the antimeridian, specify coordinates with longitudes greater than 180° or less than −180°. ([#6088](https://github.com/mapbox/mapbox-gl-native/pull/6088)) diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 7bd8f3369e..00fb5e3b23 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -1820,7 +1820,7 @@ public: } // Opt into potentially expensive tooltip tracking areas. - if (annotation.toolTip.length) { + if ([annotation respondsToSelector:@selector(toolTip)] && annotation.toolTip.length) { _wantsToolTipRects = YES; } } @@ -2355,7 +2355,7 @@ public: for (MGLAnnotationTag annotationTag : annotationTags) { MGLAnnotationImage *annotationImage = [self imageOfAnnotationWithTag:annotationTag]; id annotation = [self annotationWithTag:annotationTag]; - if (annotation.toolTip.length) { + if ([annotation respondsToSelector:@selector(toolTip)] && annotation.toolTip.length) { // Add a tooltip tracking area over the annotation image’s // frame, accounting for the image’s alignment rect. NSImage *image = annotationImage.image; -- cgit v1.2.1 From d829570cca4e2df98902236cb6d3e62dabddf487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Tue, 17 Jan 2017 12:51:02 -0800 Subject: ios-v3.4.0-rc.1 --- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index 1098c5cd10..66d457e361 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.4.0-beta.7' + version = '3.4.0-rc.1' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index cf3f3afa61..db82e07506 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.4.0-beta.7' + version = '3.4.0-rc.1' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From e38216d25444fd426921c372898c425d6030355e Mon Sep 17 00:00:00 2001 From: Jordan Kiley Date: Tue, 17 Jan 2017 20:54:36 -0800 Subject: Typo fixes, added line to MGLStyleLayer initializer description (#7759) * Typo fixes in MGLMapCamera.h and MGLMapView.h * Added line to MGLStyleLayer initializer description * Edited line in MGLShapeCollection.h --- platform/darwin/src/MGLMapCamera.h | 2 +- platform/darwin/src/MGLShapeCollection.h | 4 ++-- platform/darwin/src/MGLStyleLayer.h | 7 ++++++- platform/ios/src/MGLMapView.h | 2 +- 4 files changed, 10 insertions(+), 5 deletions(-) diff --git a/platform/darwin/src/MGLMapCamera.h b/platform/darwin/src/MGLMapCamera.h index f6bff36280..abb43d9aea 100644 --- a/platform/darwin/src/MGLMapCamera.h +++ b/platform/darwin/src/MGLMapCamera.h @@ -29,7 +29,7 @@ NS_ASSUME_NONNULL_BEGIN + (instancetype)camera; /** - Returns a new camera using based on information about the camera’s viewpoint + Returns a new camera based on information about the camera’s viewpoint and focus point. @param centerCoordinate The geographic coordinate on which the map should be diff --git a/platform/darwin/src/MGLShapeCollection.h b/platform/darwin/src/MGLShapeCollection.h index 01aece824f..b0f3e964d4 100644 --- a/platform/darwin/src/MGLShapeCollection.h +++ b/platform/darwin/src/MGLShapeCollection.h @@ -28,8 +28,8 @@ NS_ASSUME_NONNULL_BEGIN convenient to use an `MGLPointCollection`, `MGLMultiPolyline`, or `MGLMultiPolygon` object, respectively. - A multipolyline is known as a - GeometryCollection + A shape collection is known as a + GeometryCollection geometry in GeoJSON. */ @interface MGLShapeCollection : MGLShape diff --git a/platform/darwin/src/MGLStyleLayer.h b/platform/darwin/src/MGLStyleLayer.h index 4032be9297..a91ac11c2d 100644 --- a/platform/darwin/src/MGLStyleLayer.h +++ b/platform/darwin/src/MGLStyleLayer.h @@ -27,9 +27,14 @@ NS_ASSUME_NONNULL_BEGIN /** Returns a style layer object initialized with the given identifier. + The default implementation of this initializer in MGLStyleLayer creates an + invalid style layer. Call this initializer on `MGLBackgroundStyleLayer` or one of + the concrete subclasses of `MGLForegroundStyleLayer` to create a valid style + layer. + After initializing and configuring the style layer, add it to a map view’s style using the `-[MGLStyle addLayer:]` or - `-[MGLStyle insertLayer:belowLayer:]` method. + `-[MGLStyle insertLayer:belowLayer:]` method. @param identifier A string that uniquely identifies the layer in the style to which it is added. diff --git a/platform/ios/src/MGLMapView.h b/platform/ios/src/MGLMapView.h index 62f053e96b..715f3338c3 100644 --- a/platform/ios/src/MGLMapView.h +++ b/platform/ios/src/MGLMapView.h @@ -28,7 +28,7 @@ extern const CGFloat MGLMapViewDecelerationRateNormal; /** A fast deceleration rate for a map view. */ extern const CGFloat MGLMapViewDecelerationRateFast; -/** Disables decleration in a map view. */ +/** Disables deceleration in a map view. */ extern const CGFloat MGLMapViewDecelerationRateImmediate; /** -- cgit v1.2.1 From 344cd173ea96b2812549b980d1ab725c0aae57f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguye=CC=82=CC=83n?= Date: Tue, 17 Jan 2017 22:12:52 -0800 Subject: [macos] Avoid nilling out style URL on load -awakeFromNib nils out the styleURL property to ensure a style is always present on load. However, if the style URL is specified in the Style URL inspectable, it is set somewhere between -initWithCoder: and -awakeFromNib; nilling out the styleURL property in -awakeFromNib thus resets the style to the default. This change guards against nilling out a non-nil style URL, ensuring that -setStyleURL: is called once and only once on launch. --- platform/macos/src/MGLMapView.mm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/macos/src/MGLMapView.mm b/platform/macos/src/MGLMapView.mm index 00fb5e3b23..3deb7db577 100644 --- a/platform/macos/src/MGLMapView.mm +++ b/platform/macos/src/MGLMapView.mm @@ -231,7 +231,11 @@ public: - (void)awakeFromNib { [super awakeFromNib]; - self.styleURL = nil; + // If the Style URL inspectable was not set, make sure to go through + // -setStyleURL: to load the default style. + if (_mbglMap->getStyleURL().empty()) { + self.styleURL = nil; + } } + (NSArray *)restorableStateKeyPaths { -- cgit v1.2.1 From f67a2b0954d4102353fe173c794e17723d519965 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Sun, 15 Jan 2017 21:11:42 +0100 Subject: [android] - update build tools to bitrise supported version (#7729) Cherry-picked from 9a635672a6251f05b864efc71214046f9ea4acff. --- platform/android/MapboxGLAndroidSDK/gradle.properties | 6 +++--- platform/android/MapboxGLAndroidSDKTestApp/build.gradle | 4 ++-- platform/android/MapboxGLAndroidSDKWearTestApp/build.gradle | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/gradle.properties b/platform/android/MapboxGLAndroidSDK/gradle.properties index 6aab985298..e5326721b4 100644 --- a/platform/android/MapboxGLAndroidSDK/gradle.properties +++ b/platform/android/MapboxGLAndroidSDK/gradle.properties @@ -13,9 +13,9 @@ POM_DEVELOPER_ID=mapbox POM_DEVELOPER_NAME=Mapbox ANDROID_MIN_SDK=15 -ANDROID_BUILD_TARGET_SDK_VERSION=23 -ANDROID_BUILD_TOOLS_VERSION=23.0.3 -ANDROID_BUILD_SDK_VERSION=23 +ANDROID_BUILD_TARGET_SDK_VERSION=25 +ANDROID_BUILD_TOOLS_VERSION=25.0.2 +ANDROID_BUILD_SDK_VERSION=25 POM_NAME=Mapbox Android SDK POM_ARTIFACT_ID=mapbox-android-sdk diff --git a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle index f5f4ec3f54..0c32311ce8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/build.gradle +++ b/platform/android/MapboxGLAndroidSDKTestApp/build.gradle @@ -27,8 +27,8 @@ ext { } android { - compileSdkVersion 23 - buildToolsVersion "23.0.3" + compileSdkVersion 25 + buildToolsVersion "25.0.2" defaultConfig { applicationId "com.mapbox.mapboxsdk.testapp" diff --git a/platform/android/MapboxGLAndroidSDKWearTestApp/build.gradle b/platform/android/MapboxGLAndroidSDKWearTestApp/build.gradle index 6bd1fac322..9f089e5846 100644 --- a/platform/android/MapboxGLAndroidSDKWearTestApp/build.gradle +++ b/platform/android/MapboxGLAndroidSDKWearTestApp/build.gradle @@ -20,8 +20,8 @@ gradle.projectsEvaluated { } android { - compileSdkVersion 24 - buildToolsVersion "24.0.2" + compileSdkVersion 25 + buildToolsVersion "25.0.2" defaultConfig { applicationId "com.mapbox.mapboxsdk.testapp" -- cgit v1.2.1 From 4cff0977a04a0fb17e2a95ea773d9ca3222a5b03 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Fri, 20 Jan 2017 14:08:38 -0800 Subject: ios-v3.4.0 --- platform/ios/Mapbox-iOS-SDK-symbols.podspec | 2 +- platform/ios/Mapbox-iOS-SDK.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/ios/Mapbox-iOS-SDK-symbols.podspec b/platform/ios/Mapbox-iOS-SDK-symbols.podspec index 66d457e361..b1c60ca9d8 100644 --- a/platform/ios/Mapbox-iOS-SDK-symbols.podspec +++ b/platform/ios/Mapbox-iOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.4.0-rc.1' + version = '3.4.0' m.name = 'Mapbox-iOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/ios/Mapbox-iOS-SDK.podspec b/platform/ios/Mapbox-iOS-SDK.podspec index db82e07506..e815eb69a6 100644 --- a/platform/ios/Mapbox-iOS-SDK.podspec +++ b/platform/ios/Mapbox-iOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '3.4.0-rc.1' + version = '3.4.0' m.name = 'Mapbox-iOS-SDK' m.version = version -- cgit v1.2.1 From 5fd740729ecfe63fb0717acfd6f1fec07876e6a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Fri, 20 Jan 2017 22:43:04 -0800 Subject: [macos] Reorganized readmes Made the download link easier to find in the installation instructions. Reorganized readmes to link to more related resources. Shout out to OpenStreetMap. --- platform/macos/INSTALL.md | 8 ++++---- platform/macos/README.md | 18 ++++++++++++------ platform/macos/docs/pod-README.md | 6 +++--- 3 files changed, 19 insertions(+), 13 deletions(-) diff --git a/platform/macos/INSTALL.md b/platform/macos/INSTALL.md index f8b4c675de..ef04267c47 100644 --- a/platform/macos/INSTALL.md +++ b/platform/macos/INSTALL.md @@ -1,14 +1,14 @@ -# Integrating the Mapbox macOS SDK into your application +# Integrating a custom build of the Mapbox macOS SDK into your application -This document explains how to build the Mapbox macOS SDK and integrate it into your own Cocoa application. +This document explains how to build a development version of the Mapbox macOS SDK from source and integrate it into your own Cocoa application. This process is for advanced developers who want to get a glimpse of the SDK’s development between releases. To use a production-ready version of the SDK, see the [Mapbox macOS SDK homepage](https://mapbox.github.io/mapbox-gl-native/macos/). ### Requirements The Mapbox macOS SDK requires the macOS 10.10.0 SDK (or above) and Xcode 7.3 (or above). -### Building the SDK +### Building the SDK from source -Grab a [prebuilt release](https://github.com/mapbox/mapbox-gl-native/releases/) – look for the releases that begin with “macos-” – or build the SDK from source: +To build the SDK from source: 1. [Install core dependencies](../../INSTALL.md). diff --git a/platform/macos/README.md b/platform/macos/README.md index aea5ba0d6a..14b3e0cf16 100644 --- a/platform/macos/README.md +++ b/platform/macos/README.md @@ -1,10 +1,10 @@ -# Mapbox macOS SDK +# [Mapbox macOS SDK](https://mapbox.github.io/mapbox-gl-native/macos/) [![Bitrise](https://www.bitrise.io/app/155ef7da24b38dcd.svg?token=4KSOw_gd6WxTnvGE2rMttg&branch=master)](https://www.bitrise.io/app/155ef7da24b38dcd) Put interactive, scalable world maps into your native Cocoa application with the Mapbox macOS SDK. -* Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. +* Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [OpenStreetMap-based](https://www.mapbox.com/vector-tiles/mapbox-streets-v7/) [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. * Customize every aspect of the map’s appearance in code or visually using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/). * High-performance OpenGL rendering and multitouch gestures keep your users happy. * A well-designed, fully documented API helps you stay productive. @@ -14,11 +14,17 @@ Put interactive, scalable world maps into your native Cocoa application with the The Mapbox macOS SDK is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://github.com/mapbox/mapbox-gl-js/). -* [Integrate the Mapbox macOS SDK into your application](INSTALL.md) +Information for Mac developers: + +* [Integrate the Mapbox macOS SDK into your application](https://mapbox.github.io/mapbox-gl-native/macos/) +* [Learn how to use the Mapbox macOS SDK](https://mapbox.github.io/mapbox-gl-native/macos/) +* [Browse example styles designed in Mapbox Studio](https://www.mapbox.com/gallery/) + +Information for contributors: + +* [Build the Mapbox macOS SDK from source](INSTALL.md) * [Contribute to the Mapbox macOS SDK](DEVELOPING.md) -* [Mapbox macOS SDK reference documentation](https://mapbox.github.io/mapbox-gl-native/macos/) -* [See example styles designed in Mapbox Studio](https://www.mapbox.com/gallery/) -* [Hand-authoring a macOS SDK–compatible style](https://www.mapbox.com/mapbox-gl-style-spec/) +* [Mapbox Style Specification](https://www.mapbox.com/mapbox-gl-style-spec/) * [Mapbox Vector Tile Specification](https://www.mapbox.com/developers/vector-tiles/) Mapbox does not officially support the Mapbox macOS SDK to the same extent as the Mapbox iOS SDK; however, bug reports and pull requests are certainly welcome. diff --git a/platform/macos/docs/pod-README.md b/platform/macos/docs/pod-README.md index 6d45a68c34..33386340c6 100644 --- a/platform/macos/docs/pod-README.md +++ b/platform/macos/docs/pod-README.md @@ -2,7 +2,7 @@ Put interactive, scalable world maps into your native Cocoa application with the open-source Mapbox macOS SDK. -* Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. +* Mapbox-curated [map styles](https://www.mapbox.com/maps/) and [OpenStreetMap-based](https://www.mapbox.com/vector-tiles/mapbox-streets-v7/) [vector tiles](https://www.mapbox.com/vector-tiles/) make it easy to get started. * Customize every aspect of the map’s appearance in code or visually using [Mapbox Studio](https://www.mapbox.com/mapbox-studio/). * High-performance OpenGL rendering and multitouch gestures keep your users happy. * A well-designed, fully documented API helps you stay productive. @@ -12,10 +12,10 @@ Put interactive, scalable world maps into your native Cocoa application with the The Mapbox macOS SDK is compatible with macOS 10.10.0 and above for Cocoa applications developed in Objective-C, Swift, Interface Builder, or AppleScript. For hybrid applications, consider [Mapbox GL JS](https://www.mapbox.com/mapbox-gl-js/). -Mapbox macOS SDK releases are [available on GitHub](https://github.com/mapbox/mapbox-gl-native/releases/) – look for the releases that begin with “macos-”. You can also integrate the Mapbox macOS SDK into your application using CocoaPods. - ## Installation +1. Download the [latest Mapbox macOS SDK release](https://github.com/mapbox/mapbox-gl-native/releases/) from GitHub – look for a release that begins with “macos-”. (Alternatively, you can integrate the Mapbox macOS SDK into your application [using CocoaPods](https://cocoapods.org/pods/Mapbox-macOS-SDK). If you do use CocoaPods, skip the next step.) + 1. Open the project editor, select your application target, then go to the General tab. Drag Mapbox.framework into the “Embedded Binaries” section. (Don’t drag it into the “Linked Frameworks and Libraries” section; Xcode will add it there automatically.) In the sheet that appears, make sure “Copy items if needed” is checked, then click Finish. 1. Mapbox vector tiles require a Mapbox account and API access token. In the project editor, select the application target, then go to the Info tab. Under the “Custom macOS Application Target Properties” section, set `MGLMapboxAccessToken` to your access token. You can obtain an access token from the [Mapbox account page](https://www.mapbox.com/studio/account/tokens/). -- cgit v1.2.1 From 714127eb50ccb603b41eceeb66d0e7cf15ad1c15 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Minh=20Nguy=E1=BB=85n?= Date: Fri, 20 Jan 2017 22:43:57 -0800 Subject: macos-v0.3.0 --- platform/macos/Mapbox-macOS-SDK-symbols.podspec | 2 +- platform/macos/Mapbox-macOS-SDK.podspec | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/platform/macos/Mapbox-macOS-SDK-symbols.podspec b/platform/macos/Mapbox-macOS-SDK-symbols.podspec index 6de7f829a3..0a0875ccb8 100644 --- a/platform/macos/Mapbox-macOS-SDK-symbols.podspec +++ b/platform/macos/Mapbox-macOS-SDK-symbols.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '0.3.0-rc.1' + version = '0.3.0' m.name = 'Mapbox-macOS-SDK-symbols' m.version = "#{version}-symbols" diff --git a/platform/macos/Mapbox-macOS-SDK.podspec b/platform/macos/Mapbox-macOS-SDK.podspec index 03ef0eabe7..029ab4b3e2 100644 --- a/platform/macos/Mapbox-macOS-SDK.podspec +++ b/platform/macos/Mapbox-macOS-SDK.podspec @@ -1,6 +1,6 @@ Pod::Spec.new do |m| - version = '0.3.0-rc.1' + version = '0.3.0' m.name = 'Mapbox-macOS-SDK' m.version = version -- cgit v1.2.1 From a37ae27aed97af00a12cb5123264f47bd1fe3427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Konstantin=20K=C3=A4fer?= Date: Thu, 19 Jan 2017 16:36:19 +0100 Subject: =?UTF-8?q?[core]=20fix=20rendering=20180=C2=B0=20line=20joins?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mapbox-gl-js | 2 +- src/mbgl/programs/line_program.hpp | 2 +- src/mbgl/renderer/line_bucket.cpp | 16 ++++++++++++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/mapbox-gl-js b/mapbox-gl-js index 8780088951..2663093c9d 160000 --- a/mapbox-gl-js +++ b/mapbox-gl-js @@ -1 +1 @@ -Subproject commit 878008895104b67861ce73f65809f7f6f0ed7263 +Subproject commit 2663093c9d7f0cba6235131fb9b9f30328a76603 diff --git a/src/mbgl/programs/line_program.hpp b/src/mbgl/programs/line_program.hpp index 9b97cc47a9..4c2f76f402 100644 --- a/src/mbgl/programs/line_program.hpp +++ b/src/mbgl/programs/line_program.hpp @@ -49,7 +49,7 @@ struct LineAttributes : gl::Attributes< static_cast((p.y * 2) | t.y) }, { - // add 128 to store an byte in an unsigned byte + // add 128 to store a byte in an unsigned byte static_cast(::round(extrudeScale * e.x) + 128), static_cast(::round(extrudeScale * e.y) + 128), diff --git a/src/mbgl/renderer/line_bucket.cpp b/src/mbgl/renderer/line_bucket.cpp index 007060bd1b..6921b364d8 100644 --- a/src/mbgl/renderer/line_bucket.cpp +++ b/src/mbgl/renderer/line_bucket.cpp @@ -139,7 +139,14 @@ void LineBucket::addGeometry(const GeometryCoordinates& coordinates) { // Determine the normal of the join extrusion. It is the angle bisector // of the segments between the previous line and the next line. - Point joinNormal = util::unit(*prevNormal + *nextNormal); + // In the case of 180° angles, the prev and next normals cancel each other out: + // prevNormal + nextNormal = (0, 0), its magnitude is 0, so the unit vector would be + // undefined. In that case, we're keeping the joinNormal at (0, 0), so that the cosHalfAngle + // below will also become 0 and miterLength will become Infinity. + Point joinNormal = *prevNormal + *nextNormal; + if (joinNormal.x != 0 || joinNormal.y != 0) { + joinNormal = util::unit(joinNormal); + } /* joinNormal prevNormal * ↖ ↑ @@ -155,7 +162,8 @@ void LineBucket::addGeometry(const GeometryCoordinates& coordinates) { // Find the cosine of the angle between the next and join normals // using dot product. The inverse of that is the miter length. const double cosHalfAngle = joinNormal.x * nextNormal->x + joinNormal.y * nextNormal->y; - const double miterLength = cosHalfAngle != 0 ? 1 / cosHalfAngle: 1; + const double miterLength = + cosHalfAngle != 0 ? 1 / cosHalfAngle : std::numeric_limits::infinity(); const bool isSharpCorner = cosHalfAngle < COS_HALF_SHARP_CORNER && prevCoordinate && nextCoordinate; @@ -189,7 +197,7 @@ void LineBucket::addGeometry(const GeometryCoordinates& coordinates) { if (currentJoin == LineJoinType::Bevel) { // The maximum extrude length is 128 / 63 = 2 times the width of the line - // so if miterLength >= 2 we need to draw a different type of bevel where. + // so if miterLength >= 2 we need to draw a different type of bevel here. if (miterLength > 2) { currentJoin = LineJoinType::FlipBevel; } @@ -216,7 +224,7 @@ void LineBucket::addGeometry(const GeometryCoordinates& coordinates) { if (miterLength > 100) { // Almost parallel lines - joinNormal = *nextNormal; + joinNormal = *nextNormal * -1.0; } else { const double direction = prevNormal->x * nextNormal->y - prevNormal->y * nextNormal->x > 0 ? -1 : 1; const double bevelLength = miterLength * util::mag(*prevNormal + *nextNormal) / -- cgit v1.2.1 From 91efbc36a2c2e6752a815e8dfaf5d0e840a32954 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 23 Jan 2017 17:48:53 +0100 Subject: [android] - redraw MyLocationView when tilt changes, setTilt after CameraUpdate has finished animating (#7799) --- .../src/main/java/com/mapbox/mapboxsdk/maps/Transform.java | 2 +- .../main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index 88acc13356..fd85440618 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -73,7 +73,7 @@ final class Transform implements MapView.OnMapChangedListener { @Override public void onMapChanged(@MapView.MapChange int change) { if (change == REGION_DID_CHANGE_ANIMATED && cameraCancelableCallback != null) { - invalidateCameraPosition(); + updateCameraPosition(invalidateCameraPosition()); if (cameraCancelableCallback != null) { cameraCancelableCallback.onFinish(); cameraCancelableCallback = null; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index c7dd867f2d..4fc6457336 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -310,6 +310,7 @@ public class MyLocationView extends View { if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) { mapboxMap.getUiSettings().setFocalPoint(new PointF(getCenterX(), getCenterY())); } + invalidate(); } public void setBearing(double bearing) { @@ -327,8 +328,8 @@ public class MyLocationView extends View { public void setCameraPosition(CameraPosition position) { if (position != null) { - setTilt(position.tilt); setBearing(position.bearing); + setTilt(position.tilt); } } -- cgit v1.2.1 From fbe0320c9cff014f2a4d4f2c5f3a85531078b501 Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 23 Jan 2017 17:51:09 +0100 Subject: [android] - zoom to at least 2 when tracking is enabled (#7795) * [android] - zoom to at least 2 when tracking is enabled, introduce interface for zoom invalidation, simplify example * fixup unit test, added test for new interface + focal point interface --- .../java/com/mapbox/mapboxsdk/maps/MapView.java | 15 ++- .../mapbox/mapboxsdk/maps/TrackingSettings.java | 13 ++- .../java/com/mapbox/mapboxsdk/maps/Transform.java | 4 + .../mapboxsdk/maps/widgets/MyLocationView.java | 10 +- .../maps/widgets/MyLocationViewSettings.java | 4 +- .../MyLocationTrackingModeActivity.java | 101 +-------------------- .../mapboxsdk/maps/TrackingSettingsTest.java | 31 ++++++- 7 files changed, 69 insertions(+), 109 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java index 3cb074d209..9476ba186e 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapView.java @@ -132,10 +132,13 @@ public class MapView extends FrameLayout { // callback for registering touch listeners RegisterTouchListener registerTouchListener = new RegisterTouchListener(); + // callback for zooming in the camera + CameraZoomInvalidator zoomInvalidator = new CameraZoomInvalidator(); + // setup components for MapboxMap creation Projection proj = new Projection(nativeMapView); UiSettings uiSettings = new UiSettings(proj, focalPoint, compassView, attrView, view.findViewById(R.id.logoView)); - TrackingSettings trackingSettings = new TrackingSettings(myLocationView, uiSettings, focalPoint); + TrackingSettings trackingSettings = new TrackingSettings(myLocationView, uiSettings, focalPoint, zoomInvalidator); MyLocationViewSettings myLocationViewSettings = new MyLocationViewSettings(myLocationView, proj, focalPoint); MarkerViewManager markerViewManager = new MarkerViewManager((ViewGroup) findViewById(R.id.markerViewContainer)); AnnotationManager annotations = new AnnotationManager(nativeMapView, this, markerViewManager); @@ -970,6 +973,16 @@ public class MapView extends FrameLayout { } } + private class CameraZoomInvalidator implements TrackingSettings.CameraZoomInvalidator { + @Override + public void zoomTo(double zoomLevel) { + double currentZoomLevel = mapboxMap.getCameraPosition().zoom; + if (currentZoomLevel < zoomLevel) { + mapboxMap.getTransform().setZoom(zoomLevel); + } + } + } + private static class MapCallback implements OnMapChangedListener { private final MapboxMap mapboxMap; diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java index ff8d92d116..604805bcfd 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/TrackingSettings.java @@ -2,7 +2,6 @@ package com.mapbox.mapboxsdk.maps; import android.Manifest; import android.content.pm.PackageManager; -import android.graphics.PointF; import android.location.Location; import android.os.Bundle; import android.support.annotation.NonNull; @@ -28,6 +27,7 @@ public final class TrackingSettings { private final MyLocationView myLocationView; private final UiSettings uiSettings; private final FocalPointChangeListener focalPointChangedListener; + private final CameraZoomInvalidator zoomInvalidator; private LocationListener myLocationListener; private boolean myLocationEnabled; @@ -38,10 +38,11 @@ public final class TrackingSettings { private MapboxMap.OnMyBearingTrackingModeChangeListener onMyBearingTrackingModeChangeListener; TrackingSettings(@NonNull MyLocationView myLocationView, UiSettings uiSettings, - FocalPointChangeListener focalPointChangedListener) { + FocalPointChangeListener focalPointChangedListener, CameraZoomInvalidator zoomInvalidator) { this.myLocationView = myLocationView; this.focalPointChangedListener = focalPointChangedListener; this.uiSettings = uiSettings; + this.zoomInvalidator = zoomInvalidator; } void initialise(MapboxMapOptions options) { @@ -92,8 +93,8 @@ public final class TrackingSettings { myLocationView.setMyLocationTrackingMode(myLocationTrackingMode); if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) { - focalPointChangedListener.onFocalPointChanged(new PointF(myLocationView.getCenterX(), - myLocationView.getCenterY())); + zoomInvalidator.zoomTo(2.0); + focalPointChangedListener.onFocalPointChanged(myLocationView.getCenter()); } else { focalPointChangedListener.onFocalPointChanged(null); } @@ -343,4 +344,8 @@ public final class TrackingSettings { void onStop() { myLocationView.onStop(); } + + interface CameraZoomInvalidator { + void zoomTo(double zoomLevel); + } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java index fd85440618..07c2c8e3bd 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/Transform.java @@ -186,6 +186,10 @@ final class Transform implements MapView.OnMapChangedListener { } } + void setZoom(double zoom) { + mapView.setZoom(zoom); + } + // Direction double getBearing() { double direction = -mapView.getBearing(); diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java index 4fc6457336..19f86d02a5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationView.java @@ -308,7 +308,7 @@ public class MyLocationView extends View { public void setTilt(@FloatRange(from = 0, to = 60.0f) double tilt) { this.tilt = tilt; if (myLocationTrackingMode == MyLocationTracking.TRACKING_FOLLOW) { - mapboxMap.getUiSettings().setFocalPoint(new PointF(getCenterX(), getCenterY())); + mapboxMap.getUiSettings().setFocalPoint(getCenter()); } invalidate(); } @@ -529,11 +529,15 @@ public class MyLocationView extends View { directionAnimator.start(); } - public float getCenterX() { + public PointF getCenter() { + return new PointF(getCenterX(), getCenterY()); + } + + private float getCenterX() { return (getX() + getMeasuredWidth()) / 2 + contentPaddingX - projectedX; } - public float getCenterY() { + private float getCenterY() { return (getY() + getMeasuredHeight()) / 2 + contentPaddingY - projectedY; } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java index 6cfbfed733..e9d823ebda 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/widgets/MyLocationViewSettings.java @@ -1,6 +1,5 @@ package com.mapbox.mapboxsdk.maps.widgets; -import android.graphics.PointF; import android.graphics.drawable.Drawable; import android.support.annotation.ColorInt; import android.support.annotation.IntRange; @@ -289,8 +288,7 @@ public class MyLocationViewSettings { private void invalidateFocalPointForTracking(MyLocationView myLocationView) { if (!(myLocationView.getMyLocationTrackingMode() == MyLocationTracking.TRACKING_NONE)) { - focalPointChangeListener.onFocalPointChanged(new PointF(myLocationView.getCenterX(), - myLocationView.getCenterY())); + focalPointChangeListener.onFocalPointChanged(myLocationView.getCenter()); } else { focalPointChangeListener.onFocalPointChanged(null); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java index 3d08399abf..38769ecc5c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTrackingModeActivity.java @@ -1,15 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.userlocation; -import android.Manifest; -import android.content.pm.PackageManager; -import android.location.Location; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.UiThread; -import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; @@ -21,11 +13,8 @@ import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.Toast; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; -import com.mapbox.mapboxsdk.constants.MapboxConstants; import com.mapbox.mapboxsdk.constants.MyBearingTracking; import com.mapbox.mapboxsdk.constants.MyLocationTracking; -import com.mapbox.mapboxsdk.geometry.LatLng; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; @@ -33,20 +22,19 @@ import com.mapbox.mapboxsdk.maps.TrackingSettings; import com.mapbox.mapboxsdk.maps.UiSettings; import com.mapbox.mapboxsdk.testapp.R; -public class MyLocationTrackingModeActivity extends AppCompatActivity - implements MapboxMap.OnMyLocationChangeListener, AdapterView.OnItemSelectedListener { +public class MyLocationTrackingModeActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { public static final int TRACKING_NONE_INDEX = 0; public static final int TRACKING_FOLLOW_INDEX = 1; public static final int BEARING_NONE_INDEX = 0; public static final int BEARING_GPS_INDEX = 1; public static final int BEARING_COMPASS_INDEX = 2; + private MapView mapView; private MapboxMap mapboxMap; private Spinner locationSpinner; private Spinner bearingSpinner; - private Location location; - private static final int PERMISSIONS_LOCATION = 0; + private MenuItem dismissLocationTrackingOnGestureItem; private MenuItem dismissBearingTrackingOnGestureItem; private MenuItem enableRotateGesturesItem; @@ -91,8 +79,6 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity bearingSpinner.setOnItemSelectedListener(MyLocationTrackingModeActivity.this); setCheckBoxes(); - mapboxMap.setOnMyLocationChangeListener(MyLocationTrackingModeActivity.this); - mapboxMap.setOnMyLocationTrackingModeChangeListener(new MapboxMap.OnMyLocationTrackingModeChangeListener() { @Override public void onMyLocationTrackingModeChange(@MyLocationTracking.Mode int myLocationTrackingMode) { @@ -131,91 +117,12 @@ public class MyLocationTrackingModeActivity extends AppCompatActivity }); if (savedInstanceState == null) { - toggleGps(true); + mapboxMap.setMyLocationEnabled(true); } } }); } - @UiThread - public void toggleGps(boolean enableGps) { - if (enableGps) { - if ((ContextCompat.checkSelfPermission(this, - Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) - || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) - != PackageManager.PERMISSION_GRANTED)) { - ActivityCompat.requestPermissions(this, new String[] { - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION); - } else { - enableLocation(true); - } - } else { - enableLocation(false); - } - } - - private void enableLocation(boolean enabled) { - if (enabled) { - mapboxMap.setMyLocationEnabled(true); - Location location = mapboxMap.getMyLocation(); - if (location != null) { - setInitialPosition(new LatLng(location)); - } - } else { - mapboxMap.setMyLocationEnabled(false); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (requestCode == PERMISSIONS_LOCATION) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - enableLocation(true); - } - } - } - - private void setInitialPosition(LatLng latLng) { - mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14)); - mapboxMap.setMyLocationEnabled(true); - locationSpinner.setEnabled(true); - bearingSpinner.setEnabled(true); - } - - @Override - public void onMyLocationChange(@Nullable Location location) { - if (location != null) { - if (this.location == null) { - // initial location to reposition map - setInitialPosition(new LatLng(location)); - } - this.location = location; - showSnackBar(); - } - } - - private void showSnackBar() { - String desc = "Loc Chg: "; - boolean noInfo = true; - if (location.hasSpeed()) { - desc += String.format(MapboxConstants.MAPBOX_LOCALE, "Spd = %.1f km/h ", location.getSpeed() * 3.6f); - noInfo = false; - } - if (location.hasAltitude()) { - desc += String.format(MapboxConstants.MAPBOX_LOCALE, "Alt = %.0f m ", location.getAltitude()); - noInfo = false; - } - if (location.hasAccuracy()) { - desc += String.format(MapboxConstants.MAPBOX_LOCALE, "Acc = %.0f m", location.getAccuracy()); - } - - if (noInfo) { - desc += "No extra info"; - } - Snackbar.make(findViewById(android.R.id.content), desc, Snackbar.LENGTH_SHORT).show(); - } - @Override public void onItemSelected(AdapterView parent, View view, int position, long id) throws SecurityException { TrackingSettings trackingSettings = mapboxMap.getTrackingSettings(); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java index 150f638e1c..de5f364a5b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/test/java/com/mapbox/mapboxsdk/maps/TrackingSettingsTest.java @@ -3,6 +3,7 @@ package com.mapbox.mapboxsdk.maps; import android.Manifest; import android.content.Context; import android.content.pm.PackageManager; +import android.graphics.PointF; import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.maps.widgets.MyLocationView; @@ -16,7 +17,9 @@ import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.atLeast; import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; public class TrackingSettingsTest { @@ -30,11 +33,14 @@ public class TrackingSettingsTest { @InjectMocks FocalPointChangeListener focalPointChangeListener = mock(FocalPointChangeListener.class); + @InjectMocks + TrackingSettings.CameraZoomInvalidator zoomInvalidator = mock(TrackingSettings.CameraZoomInvalidator.class); + private TrackingSettings trackingSettings; @Before public void beforeTest() { - trackingSettings = new TrackingSettings(myLocationView, uiSettings, focalPointChangeListener); + trackingSettings = new TrackingSettings(myLocationView, uiSettings, focalPointChangeListener, zoomInvalidator); } @Test @@ -67,4 +73,27 @@ public class TrackingSettingsTest { trackingSettings.setMyLocationEnabled(true); assertTrue("Location should be enabled", trackingSettings.isMyLocationEnabled()); } + + @Test + public void testCameraZoomTo2forTracking() { + trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + verify(zoomInvalidator, atLeast(1)).zoomTo(2.0); + } + + @Test + public void testFocalPointChangeForTracking() { + final float centerX = 32.3f; + final float centerY = 46.3f; + final PointF pointF = new PointF(centerX, centerY); + when(myLocationView.getCenter()).thenReturn(pointF); + + trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); + verify(focalPointChangeListener, atLeast(1)).onFocalPointChanged(pointF); + } + + @Test + public void testFocalPointChangeForNonTracking() { + trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_NONE); + verify(focalPointChangeListener, atLeast(1)).onFocalPointChanged(null); + } } -- cgit v1.2.1 From 97b433edc99f5b7212915aab483e119f60fde101 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Tue, 3 Jan 2017 18:49:52 -0400 Subject: [core] Private implementation for SQLite interface --- platform/default/sqlite3.cpp | 252 ++++++++++++++++++++++++------------------- platform/default/sqlite3.hpp | 15 +-- 2 files changed, 149 insertions(+), 118 deletions(-) diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index 670b7b84cc..8e882f4455 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -12,9 +12,65 @@ namespace mapbox { namespace sqlite { +class DatabaseImpl { +public: + DatabaseImpl(const char* filename, int flags) + { + const int error = sqlite3_open_v2(filename, &db, flags, nullptr); + if (error != SQLITE_OK) { + const auto message = sqlite3_errmsg(db); + db = nullptr; + throw Exception { error, message }; + } + } + + ~DatabaseImpl() + { + if (!db) return; + + const int error = sqlite3_close(db); + if (error != SQLITE_OK) { + throw Exception { error, sqlite3_errmsg(db) }; + } + } + + sqlite3* db = nullptr; +}; + +class StatementImpl { +public: + StatementImpl(sqlite3* db, const char* sql) + { + const int error = sqlite3_prepare_v2(db, sql, -1, &stmt, nullptr); + if (error != SQLITE_OK) { + stmt = nullptr; + throw Exception { error, sqlite3_errmsg(db) }; + } + } + + ~StatementImpl() + { + if (!stmt) return; + + sqlite3_finalize(stmt); + } + + sqlite3_stmt* stmt = nullptr; +}; + template using optional = std::experimental::optional; +static void errorLogCallback(void *, const int err, const char *msg) { + if (err == SQLITE_ERROR) { + mbgl::Log::Error(mbgl::Event::Database, "%s (Code %i)", msg, err); + } else if (err == SQLITE_WARNING) { + mbgl::Log::Warning(mbgl::Event::Database, "%s (Code %i)", msg, err); + } else { + mbgl::Log::Info(mbgl::Event::Database, "%s (Code %i)", msg, err); + } +} + const static bool sqliteVersionCheck __attribute__((unused)) = []() { if (sqlite3_libversion_number() / 1000000 != SQLITE_VERSION_NUMBER / 1000000) { char message[96]; @@ -25,94 +81,71 @@ const static bool sqliteVersionCheck __attribute__((unused)) = []() { } // Enable SQLite logging before initializing the database. - sqlite3_config(SQLITE_CONFIG_LOG, Database::errorLogCallback, nullptr); + sqlite3_config(SQLITE_CONFIG_LOG, errorLogCallback, nullptr); return true; }(); -Database::Database(const std::string &filename, int flags) { - const int err = sqlite3_open_v2(filename.c_str(), &db, flags, nullptr); - if (err != SQLITE_OK) { - const auto message = sqlite3_errmsg(db); - db = nullptr; - throw Exception { err, message }; - } +Database::Database(const std::string &filename, int flags) + : impl(std::make_unique(filename.c_str(), flags)) +{ } Database::Database(Database &&other) - : db(std::move(other.db)) {} + : impl(std::move(other.impl)) {} Database &Database::operator=(Database &&other) { - std::swap(db, other.db); + std::swap(impl, other.impl); return *this; } Database::~Database() { - if (db) { - const int err = sqlite3_close(db); - if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(db) }; - } - } } Database::operator bool() const { - return db != nullptr; -} - -void Database::errorLogCallback(void *, const int err, const char *msg) { - if (err == SQLITE_ERROR) { - mbgl::Log::Error(mbgl::Event::Database, "%s (Code %i)", msg, err); - } else if (err == SQLITE_WARNING) { - mbgl::Log::Warning(mbgl::Event::Database, "%s (Code %i)", msg, err); - } else { - mbgl::Log::Info(mbgl::Event::Database, "%s (Code %i)", msg, err); - } + return impl.operator bool(); } void Database::setBusyTimeout(std::chrono::milliseconds timeout) { - assert(db); - const int err = sqlite3_busy_timeout(db, + assert(impl); + const int err = sqlite3_busy_timeout(impl->db, int(std::min(timeout.count(), std::numeric_limits::max()))); if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(db) }; + throw Exception { err, sqlite3_errmsg(impl->db) }; } } void Database::exec(const std::string &sql) { - assert(db); + assert(impl); char *msg = nullptr; - const int err = sqlite3_exec(db, sql.c_str(), nullptr, nullptr, &msg); + const int err = sqlite3_exec(impl->db, sql.c_str(), nullptr, nullptr, &msg); if (msg) { const std::string message = msg; sqlite3_free(msg); throw Exception { err, message }; } else if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(db) }; + throw Exception { err, sqlite3_errmsg(impl->db) }; } } Statement Database::prepare(const char *query) { - assert(db); - return Statement(db, query); + assert(impl); + return Statement(this, query); } int64_t Database::lastInsertRowid() const { - assert(db); - return sqlite3_last_insert_rowid(db); + assert(impl); + return sqlite3_last_insert_rowid(impl->db); } uint64_t Database::changes() const { - assert(db); - return sqlite3_changes(db); + assert(impl); + return sqlite3_changes(impl->db); } -Statement::Statement(sqlite3 *db, const char *sql) { - const int err = sqlite3_prepare_v2(db, sql, -1, &stmt, nullptr); - if (err != SQLITE_OK) { - stmt = nullptr; - throw Exception { err, sqlite3_errmsg(db) }; - } +Statement::Statement(Database *db, const char *sql) + : impl(std::make_unique(db->impl->db, sql)) +{ } Statement::Statement(Statement &&other) { @@ -120,84 +153,81 @@ Statement::Statement(Statement &&other) { } Statement &Statement::operator=(Statement &&other) { - std::swap(stmt, other.stmt); + std::swap(impl, other.impl); return *this; } Statement::~Statement() { - if (stmt) { - sqlite3_finalize(stmt); - } } Statement::operator bool() const { - return stmt != nullptr; + return impl.operator bool(); } void Statement::check(int err) { if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(stmt)) }; + throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(impl->stmt)) }; } } template <> void Statement::bind(int offset, std::nullptr_t) { - assert(stmt); - check(sqlite3_bind_null(stmt, offset)); + assert(impl); + check(sqlite3_bind_null(impl->stmt, offset)); } template <> void Statement::bind(int offset, int8_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int16_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int32_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int64_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint8_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint16_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint32_t value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, float value) { - assert(stmt); - check(sqlite3_bind_double(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_double(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, double value) { - assert(stmt); - check(sqlite3_bind_double(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_double(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, bool value) { - assert(stmt); - check(sqlite3_bind_int(stmt, offset, value)); + assert(impl); + check(sqlite3_bind_int(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, const char *value) { - assert(stmt); - check(sqlite3_bind_text(stmt, offset, value, -1, SQLITE_STATIC)); + assert(impl); + check(sqlite3_bind_text(impl->stmt, offset, value, -1, SQLITE_STATIC)); } // We currently cannot use sqlite3_bind_blob64 / sqlite3_bind_text64 because they @@ -208,11 +238,11 @@ template <> void Statement::bind(int offset, const char *value) { // the first iOS version with 3.8.7+ was 9.0, with 3.8.10.2. void Statement::bind(int offset, const char * value, std::size_t length, bool retain) { - assert(stmt); + assert(impl); if (length > std::numeric_limits::max()) { throw std::range_error("value too long for sqlite3_bind_text"); } - check(sqlite3_bind_text(stmt, offset, value, int(length), + check(sqlite3_bind_text(impl->stmt, offset, value, int(length), retain ? SQLITE_TRANSIENT : SQLITE_STATIC)); } @@ -221,11 +251,11 @@ void Statement::bind(int offset, const std::string& value, bool retain) { } void Statement::bindBlob(int offset, const void * value, std::size_t length, bool retain) { - assert(stmt); + assert(impl); if (length > std::numeric_limits::max()) { throw std::range_error("value too long for sqlite3_bind_text"); } - check(sqlite3_bind_blob(stmt, offset, value, int(length), + check(sqlite3_bind_blob(impl->stmt, offset, value, int(length), retain ? SQLITE_TRANSIENT : SQLITE_STATIC)); } @@ -235,9 +265,9 @@ void Statement::bindBlob(int offset, const std::vector& value, bool ret template <> void Statement::bind( - int offset, std::chrono::time_point value) { - assert(stmt); - check(sqlite3_bind_int64(stmt, offset, std::chrono::system_clock::to_time_t(value))); + int offset, std::chrono::time_point value) { + assert(impl); + check(sqlite3_bind_int64(impl->stmt, offset, std::chrono::system_clock::to_time_t(value))); } template <> void Statement::bind(int offset, optional value) { @@ -260,60 +290,60 @@ void Statement::bind( } bool Statement::run() { - assert(stmt); - const int err = sqlite3_step(stmt); + assert(impl); + const int err = sqlite3_step(impl->stmt); if (err == SQLITE_DONE) { return false; } else if (err == SQLITE_ROW) { return true; } else if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(stmt)) }; + throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(impl->stmt)) }; } else { return false; } } template <> int Statement::get(int offset) { - assert(stmt); - return sqlite3_column_int(stmt, offset); + assert(impl); + return sqlite3_column_int(impl->stmt, offset); } template <> int64_t Statement::get(int offset) { - assert(stmt); - return sqlite3_column_int64(stmt, offset); + assert(impl); + return sqlite3_column_int64(impl->stmt, offset); } template <> double Statement::get(int offset) { - assert(stmt); - return sqlite3_column_double(stmt, offset); + assert(impl); + return sqlite3_column_double(impl->stmt, offset); } template <> std::string Statement::get(int offset) { - assert(stmt); + assert(impl); return { - reinterpret_cast(sqlite3_column_blob(stmt, offset)), - size_t(sqlite3_column_bytes(stmt, offset)) + reinterpret_cast(sqlite3_column_blob(impl->stmt, offset)), + size_t(sqlite3_column_bytes(impl->stmt, offset)) }; } template <> std::vector Statement::get(int offset) { - assert(stmt); - const uint8_t* begin = reinterpret_cast(sqlite3_column_blob(stmt, offset)); - const uint8_t* end = begin + sqlite3_column_bytes(stmt, offset); + assert(impl); + const uint8_t* begin = reinterpret_cast(sqlite3_column_blob(impl->stmt, offset)); + const uint8_t* end = begin + sqlite3_column_bytes(impl->stmt, offset); return { begin, end }; } template <> std::chrono::time_point Statement::get(int offset) { - assert(stmt); + assert(impl); return std::chrono::time_point_cast( - std::chrono::system_clock::from_time_t(sqlite3_column_int64(stmt, offset))); + std::chrono::system_clock::from_time_t(sqlite3_column_int64(impl->stmt, offset))); } template <> optional Statement::get(int offset) { - assert(stmt); - if (sqlite3_column_type(stmt, offset) == SQLITE_NULL) { + assert(impl); + if (sqlite3_column_type(impl->stmt, offset) == SQLITE_NULL) { return optional(); } else { return get(offset); @@ -321,8 +351,8 @@ template <> optional Statement::get(int offset) { } template <> optional Statement::get(int offset) { - assert(stmt); - if (sqlite3_column_type(stmt, offset) == SQLITE_NULL) { + assert(impl); + if (sqlite3_column_type(impl->stmt, offset) == SQLITE_NULL) { return optional(); } else { return get(offset); @@ -330,8 +360,8 @@ template <> optional Statement::get(int offset) { } template <> optional Statement::get(int offset) { - assert(stmt); - if (sqlite3_column_type(stmt, offset) == SQLITE_NULL) { + assert(impl); + if (sqlite3_column_type(impl->stmt, offset) == SQLITE_NULL) { return optional(); } else { return get(offset); @@ -341,8 +371,8 @@ template <> optional Statement::get(int offset) { template <> optional> Statement::get(int offset) { - assert(stmt); - if (sqlite3_column_type(stmt, offset) == SQLITE_NULL) { + assert(impl); + if (sqlite3_column_type(impl->stmt, offset) == SQLITE_NULL) { return {}; } else { return get>( @@ -351,13 +381,13 @@ Statement::get(int offset) { } void Statement::reset() { - assert(stmt); - sqlite3_reset(stmt); + assert(impl); + sqlite3_reset(impl->stmt); } void Statement::clearBindings() { - assert(stmt); - sqlite3_clear_bindings(stmt); + assert(impl); + sqlite3_clear_bindings(impl->stmt); } Transaction::Transaction(Database& db_, Mode mode) diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp index 8e4a4b971e..dac7b6f650 100644 --- a/platform/default/sqlite3.hpp +++ b/platform/default/sqlite3.hpp @@ -4,9 +4,7 @@ #include #include #include - -typedef struct sqlite3 sqlite3; -typedef struct sqlite3_stmt sqlite3_stmt; +#include namespace mapbox { namespace sqlite { @@ -27,7 +25,9 @@ struct Exception : std::runtime_error { const int code = 0; }; +class DatabaseImpl; class Statement; +class StatementImpl; class Database { private: @@ -42,7 +42,6 @@ public: explicit operator bool() const; - static void errorLogCallback(void *arg, const int err, const char *msg); void setBusyTimeout(std::chrono::milliseconds); void exec(const std::string &sql); Statement prepare(const char *query); @@ -51,7 +50,9 @@ public: uint64_t changes() const; private: - sqlite3 *db = nullptr; + std::unique_ptr impl; + + friend class Statement; }; class Statement { @@ -62,7 +63,7 @@ private: void check(int err); public: - Statement(sqlite3 *db, const char *sql); + Statement(Database *db, const char *sql); Statement(Statement &&); ~Statement(); Statement &operator=(Statement &&); @@ -86,7 +87,7 @@ public: void clearBindings(); private: - sqlite3_stmt *stmt = nullptr; + std::unique_ptr impl; }; class Transaction { -- cgit v1.2.1 From 80d72123dfe3cb9f560b6a150a998eeda480b9de Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 4 Jan 2017 11:09:45 -0400 Subject: [core] Move lastInsertRowId/changes to sqlite::Statement --- platform/default/mbgl/storage/offline_database.cpp | 14 ++++++------ platform/default/sqlite3.cpp | 25 +++++++++++++--------- platform/default/sqlite3.hpp | 6 +++--- test/storage/offline_database.test.cpp | 19 ++++++++++++++++ 4 files changed, 44 insertions(+), 20 deletions(-) diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp index 49359dbd39..cdbb940057 100644 --- a/platform/default/mbgl/storage/offline_database.cpp +++ b/platform/default/mbgl/storage/offline_database.cpp @@ -313,7 +313,7 @@ bool OfflineDatabase::putResource(const Resource& resource, } update->run(); - if (db->changes() != 0) { + if (update->changes() != 0) { transaction.commit(); return false; } @@ -502,7 +502,7 @@ bool OfflineDatabase::putTile(const Resource::TileData& tile, } update->run(); - if (db->changes() != 0) { + if (update->changes() != 0) { transaction.commit(); return false; } @@ -567,7 +567,7 @@ OfflineRegion OfflineDatabase::createRegion(const OfflineRegionDefinition& defin stmt->bindBlob(2, metadata); stmt->run(); - return OfflineRegion(db->lastInsertRowid(), definition, metadata); + return OfflineRegion(stmt->lastInsertRowId(), definition, metadata); } OfflineRegionMetadata OfflineDatabase::updateMetadata(const int64_t regionID, const OfflineRegionMetadata& metadata) { @@ -656,7 +656,7 @@ bool OfflineDatabase::markUsed(int64_t regionID, const Resource& resource) { insert->bind(6, tile.z); insert->run(); - if (db->changes() == 0) { + if (insert->changes() == 0) { return false; } @@ -693,7 +693,7 @@ bool OfflineDatabase::markUsed(int64_t regionID, const Resource& resource) { insert->bind(2, resource.url); insert->run(); - if (db->changes() == 0) { + if (insert->changes() == 0) { return false; } @@ -830,7 +830,7 @@ bool OfflineDatabase::evict(uint64_t neededFreeSize) { // clang-format on stmt1->bind(1, accessed); stmt1->run(); - uint64_t changes1 = db->changes(); + uint64_t changes1 = stmt1->changes(); // clang-format off Statement stmt2 = getStatement( @@ -845,7 +845,7 @@ bool OfflineDatabase::evict(uint64_t neededFreeSize) { // clang-format on stmt2->bind(1, accessed); stmt2->run(); - uint64_t changes2 = db->changes(); + uint64_t changes2 = stmt2->changes(); // The cached value of offlineTileCount does not need to be updated // here because only non-offline tiles can be removed by eviction. diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index 8e882f4455..251433638a 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -56,6 +56,8 @@ public: } sqlite3_stmt* stmt = nullptr; + int64_t lastInsertRowId = 0; + int64_t changes = 0; }; template @@ -133,16 +135,6 @@ Statement Database::prepare(const char *query) { return Statement(this, query); } -int64_t Database::lastInsertRowid() const { - assert(impl); - return sqlite3_last_insert_rowid(impl->db); -} - -uint64_t Database::changes() const { - assert(impl); - return sqlite3_changes(impl->db); -} - Statement::Statement(Database *db, const char *sql) : impl(std::make_unique(db->impl->db, sql)) { @@ -292,6 +284,8 @@ void Statement::bind( bool Statement::run() { assert(impl); const int err = sqlite3_step(impl->stmt); + impl->lastInsertRowId = sqlite3_last_insert_rowid(sqlite3_db_handle(impl->stmt)); + impl->changes = sqlite3_changes(sqlite3_db_handle(impl->stmt)); if (err == SQLITE_DONE) { return false; } else if (err == SQLITE_ROW) { @@ -390,6 +384,17 @@ void Statement::clearBindings() { sqlite3_clear_bindings(impl->stmt); } +int64_t Statement::lastInsertRowId() const { + assert(impl); + return impl->lastInsertRowId; +} + +uint64_t Statement::changes() const { + assert(impl); + auto changes = impl->changes; + return (changes < 0 ? 0 : changes); +} + Transaction::Transaction(Database& db_, Mode mode) : db(db_) { switch (mode) { diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp index dac7b6f650..02113b829f 100644 --- a/platform/default/sqlite3.hpp +++ b/platform/default/sqlite3.hpp @@ -46,9 +46,6 @@ public: void exec(const std::string &sql); Statement prepare(const char *query); - int64_t lastInsertRowid() const; - uint64_t changes() const; - private: std::unique_ptr impl; @@ -86,6 +83,9 @@ public: void reset(); void clearBindings(); + int64_t lastInsertRowId() const; + uint64_t changes() const; + private: std::unique_ptr impl; }; diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index 2e25835d80..5e8da106da 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -80,6 +80,25 @@ private: } // namespace +TEST(OfflineDatabase, Statement) { + using namespace mbgl; + + mapbox::sqlite::Database db(":memory:", mapbox::sqlite::ReadWrite | mapbox::sqlite::Create); + db.exec("CREATE TABLE test (id INTEGER)"); + mapbox::sqlite::Statement stmt1 = db.prepare("INSERT INTO test (id) VALUES (?1)"); + stmt1.bind(1, 0); + stmt1.run(); + ASSERT_EQ(stmt1.lastInsertRowId(), 1); + ASSERT_EQ(stmt1.changes(), 1); + + mapbox::sqlite::Statement stmt2 = db.prepare("INSERT INTO test (id) VALUES (?1)"); + stmt2.bind(1, 0); + stmt2.run(); + ASSERT_EQ(stmt1.lastInsertRowId(), 1); + ASSERT_EQ(stmt2.lastInsertRowId(), 2); + ASSERT_EQ(stmt2.changes(), 1); +} + TEST(OfflineDatabase, TEST_REQUIRES_WRITE(Create)) { using namespace mbgl; -- cgit v1.2.1 From b8863a6dcaed22719b519e9a889ab97e42e63a50 Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 4 Jan 2017 11:54:55 -0400 Subject: [core] Move sqlite::Statement::check to pimpl --- platform/default/sqlite3.cpp | 42 +++++++++++++++++++++--------------------- platform/default/sqlite3.hpp | 2 -- 2 files changed, 21 insertions(+), 23 deletions(-) diff --git a/platform/default/sqlite3.cpp b/platform/default/sqlite3.cpp index 251433638a..18dd75966e 100644 --- a/platform/default/sqlite3.cpp +++ b/platform/default/sqlite3.cpp @@ -55,6 +55,12 @@ public: sqlite3_finalize(stmt); } + void check(int err) { + if (err != SQLITE_OK) { + throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(stmt)) }; + } + } + sqlite3_stmt* stmt = nullptr; int64_t lastInsertRowId = 0; int64_t changes = 0; @@ -156,70 +162,64 @@ Statement::operator bool() const { return impl.operator bool(); } -void Statement::check(int err) { - if (err != SQLITE_OK) { - throw Exception { err, sqlite3_errmsg(sqlite3_db_handle(impl->stmt)) }; - } -} - template <> void Statement::bind(int offset, std::nullptr_t) { assert(impl); - check(sqlite3_bind_null(impl->stmt, offset)); + impl->check(sqlite3_bind_null(impl->stmt, offset)); } template <> void Statement::bind(int offset, int8_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int16_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int32_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, int64_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint8_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint16_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, uint32_t value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int64(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, float value) { assert(impl); - check(sqlite3_bind_double(impl->stmt, offset, value)); + impl->check(sqlite3_bind_double(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, double value) { assert(impl); - check(sqlite3_bind_double(impl->stmt, offset, value)); + impl->check(sqlite3_bind_double(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, bool value) { assert(impl); - check(sqlite3_bind_int(impl->stmt, offset, value)); + impl->check(sqlite3_bind_int(impl->stmt, offset, value)); } template <> void Statement::bind(int offset, const char *value) { assert(impl); - check(sqlite3_bind_text(impl->stmt, offset, value, -1, SQLITE_STATIC)); + impl->check(sqlite3_bind_text(impl->stmt, offset, value, -1, SQLITE_STATIC)); } // We currently cannot use sqlite3_bind_blob64 / sqlite3_bind_text64 because they @@ -234,7 +234,7 @@ void Statement::bind(int offset, const char * value, std::size_t length, bool re if (length > std::numeric_limits::max()) { throw std::range_error("value too long for sqlite3_bind_text"); } - check(sqlite3_bind_text(impl->stmt, offset, value, int(length), + impl->check(sqlite3_bind_text(impl->stmt, offset, value, int(length), retain ? SQLITE_TRANSIENT : SQLITE_STATIC)); } @@ -247,7 +247,7 @@ void Statement::bindBlob(int offset, const void * value, std::size_t length, boo if (length > std::numeric_limits::max()) { throw std::range_error("value too long for sqlite3_bind_text"); } - check(sqlite3_bind_blob(impl->stmt, offset, value, int(length), + impl->check(sqlite3_bind_blob(impl->stmt, offset, value, int(length), retain ? SQLITE_TRANSIENT : SQLITE_STATIC)); } @@ -259,7 +259,7 @@ template <> void Statement::bind( int offset, std::chrono::time_point value) { assert(impl); - check(sqlite3_bind_int64(impl->stmt, offset, std::chrono::system_clock::to_time_t(value))); + impl->check(sqlite3_bind_int64(impl->stmt, offset, std::chrono::system_clock::to_time_t(value))); } template <> void Statement::bind(int offset, optional value) { diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp index 02113b829f..e09193592e 100644 --- a/platform/default/sqlite3.hpp +++ b/platform/default/sqlite3.hpp @@ -57,8 +57,6 @@ private: Statement(const Statement &) = delete; Statement &operator=(const Statement &) = delete; - void check(int err); - public: Statement(Database *db, const char *sql); Statement(Statement &&); -- cgit v1.2.1 From eb772258cfa1af3a530ce9ff750c86aff20f96cf Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Thu, 5 Jan 2017 09:10:00 -0400 Subject: [core] Replace sqlite3.h dependency in offline database --- platform/default/mbgl/storage/offline_database.cpp | 5 ++--- platform/default/sqlite3.hpp | 8 +++++++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/platform/default/mbgl/storage/offline_database.cpp b/platform/default/mbgl/storage/offline_database.cpp index cdbb940057..9f531bcac4 100644 --- a/platform/default/mbgl/storage/offline_database.cpp +++ b/platform/default/mbgl/storage/offline_database.cpp @@ -7,7 +7,6 @@ #include #include "sqlite3.hpp" -#include namespace mbgl { @@ -57,13 +56,13 @@ void OfflineDatabase::ensureSchema() { removeExisting(); connect(mapbox::sqlite::ReadWrite | mapbox::sqlite::Create); } catch (mapbox::sqlite::Exception& ex) { - if (ex.code != SQLITE_CANTOPEN && ex.code != SQLITE_NOTADB) { + if (ex.code != mapbox::sqlite::Exception::Code::CANTOPEN && ex.code != mapbox::sqlite::Exception::Code::NOTADB) { Log::Error(Event::Database, "Unexpected error connecting to database: %s", ex.what()); throw; } try { - if (ex.code == SQLITE_NOTADB) { + if (ex.code == mapbox::sqlite::Exception::Code::NOTADB) { removeExisting(); } connect(mapbox::sqlite::ReadWrite | mapbox::sqlite::Create); diff --git a/platform/default/sqlite3.hpp b/platform/default/sqlite3.hpp index e09193592e..2cbc3cf48b 100644 --- a/platform/default/sqlite3.hpp +++ b/platform/default/sqlite3.hpp @@ -20,9 +20,15 @@ enum OpenFlag : int { }; struct Exception : std::runtime_error { + enum Code : int { + OK = 0, + CANTOPEN = 14, + NOTADB = 26 + }; + Exception(int err, const char *msg) : std::runtime_error(msg), code(err) {} Exception(int err, const std::string& msg) : std::runtime_error(msg), code(err) {} - const int code = 0; + const int code = OK; }; class DatabaseImpl; -- cgit v1.2.1 From 88b7fc3929acbe119b3dbfa2a9f6dbd04b338ebe Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Thu, 5 Jan 2017 12:09:30 -0400 Subject: [Qt] Implement mapbox::sqlite::{Database,Statement} using QtSql --- cmake/test-files.cmake | 1 + platform/qt/config.cmake | 2 - platform/qt/qt.cmake | 2 +- platform/qt/qt4.cmake | 1 + platform/qt/qt5.cmake | 3 + platform/qt/src/sqlite3.cpp | 411 +++++++++++++++++++++++++++++++++ test/storage/offline_database.test.cpp | 19 -- test/storage/sqlite.test.cpp | 27 +++ 8 files changed, 444 insertions(+), 22 deletions(-) create mode 100644 platform/qt/src/sqlite3.cpp create mode 100644 test/storage/sqlite.test.cpp diff --git a/cmake/test-files.cmake b/cmake/test-files.cmake index 5d2b63d13f..76e0857142 100644 --- a/cmake/test-files.cmake +++ b/cmake/test-files.cmake @@ -68,6 +68,7 @@ set(MBGL_TEST_FILES test/storage/offline_download.test.cpp test/storage/online_file_source.test.cpp test/storage/resource.test.cpp + test/storage/sqlite.test.cpp # style/conversion test/style/conversion/function.test.cpp diff --git a/platform/qt/config.cmake b/platform/qt/config.cmake index e1c454c757..50e374174b 100644 --- a/platform/qt/config.cmake +++ b/platform/qt/config.cmake @@ -23,8 +23,6 @@ macro(mbgl_platform_core) PRIVATE platform/qt/include ) - target_add_mason_package(mbgl-core PRIVATE sqlite) - target_link_libraries(mbgl-core ${MBGL_QT_LIBRARIES} ) diff --git a/platform/qt/qt.cmake b/platform/qt/qt.cmake index bd7c863f98..32ffe89bfe 100644 --- a/platform/qt/qt.cmake +++ b/platform/qt/qt.cmake @@ -25,7 +25,6 @@ set(MBGL_QT_FILES PRIVATE platform/default/mbgl/storage/offline_database.hpp PRIVATE platform/default/mbgl/storage/offline_download.cpp PRIVATE platform/default/mbgl/storage/offline_download.hpp - PRIVATE platform/default/sqlite3.cpp PRIVATE platform/default/sqlite3.hpp # Misc @@ -45,6 +44,7 @@ set(MBGL_QT_FILES PRIVATE platform/qt/src/image.cpp PRIVATE platform/qt/src/run_loop.cpp PRIVATE platform/qt/src/run_loop_impl.hpp + PRIVATE platform/qt/src/sqlite3.cpp PRIVATE platform/qt/src/string_stdlib.cpp PRIVATE platform/qt/src/timer.cpp PRIVATE platform/qt/src/timer_impl.hpp diff --git a/platform/qt/qt4.cmake b/platform/qt/qt4.cmake index 45c299c8a8..d6d7d89417 100644 --- a/platform/qt/qt4.cmake +++ b/platform/qt/qt4.cmake @@ -5,6 +5,7 @@ set(MBGL_QT_LIBRARIES PRIVATE Qt4::QtGui PRIVATE Qt4::QtNetwork PRIVATE Qt4::QtOpenGL + PRIVATE Qt4::QtSql ) target_link_libraries(qmapboxgl diff --git a/platform/qt/qt5.cmake b/platform/qt/qt5.cmake index 47e178d132..9c3dde60cd 100644 --- a/platform/qt/qt5.cmake +++ b/platform/qt/qt5.cmake @@ -5,6 +5,7 @@ find_package(Qt5Network REQUIRED) find_package(Qt5OpenGL REQUIRED) find_package(Qt5Quick REQUIRED) find_package(Qt5Widgets REQUIRED) +find_package(Qt5Sql REQUIRED) set(MBGL_QT_LIBRARIES PRIVATE Qt5::Core @@ -13,6 +14,7 @@ set(MBGL_QT_LIBRARIES PRIVATE Qt5::Network PRIVATE Qt5::OpenGL PRIVATE Qt5::Quick + PRIVATE Qt5::Sql ) target_sources(qmapboxgl @@ -31,6 +33,7 @@ target_link_libraries(qmapboxgl PRIVATE Qt5::Location PRIVATE Qt5::OpenGL PRIVATE Qt5::Quick + PRIVATE Qt5::Sql ) target_link_libraries(mbgl-qt diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp new file mode 100644 index 0000000000..57725b8233 --- /dev/null +++ b/platform/qt/src/sqlite3.cpp @@ -0,0 +1,411 @@ +#include "sqlite3.hpp" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +static uint32_t count = 0; + +namespace mapbox { +namespace sqlite { + +// https://www.sqlite.org/rescode.html#ok +static_assert(mbgl::underlying_type(Exception::OK) == 0, "error"); +// https://www.sqlite.org/rescode.html#cantopen +static_assert(mbgl::underlying_type(Exception::CANTOPEN) == 14, "error"); +// https://www.sqlite.org/rescode.html#notadb +static_assert(mbgl::underlying_type(Exception::NOTADB) == 26, "error"); + +void checkQueryError(const QSqlQuery& query) { + QSqlError lastError = query.lastError(); + if (lastError.type() != QSqlError::NoError) { +#if QT_VERSION >= 0x050300 + throw Exception { lastError.nativeErrorCode().toInt(), lastError.text().toStdString() }; +#else + throw Exception { lastError.number(), lastError.text().toStdString() }; +#endif + } +} + +void checkDatabaseError(const QSqlDatabase &db) { + QSqlError lastError = db.lastError(); + if (lastError.type() != QSqlError::NoError) { +#if QT_VERSION >= 0x050300 + throw Exception { lastError.nativeErrorCode().toInt(), lastError.text().toStdString() }; +#else + throw Exception { lastError.number(), lastError.text().toStdString() }; +#endif + } +} + +class DatabaseImpl { +public: + DatabaseImpl(const char* filename, int flags) + : db(QSqlDatabase::addDatabase("QSQLITE", QString::fromStdString(mbgl::util::toString(count++)))) { + QString connectOptions = db.connectOptions(); + if (flags & OpenFlag::ReadOnly) { + if (!connectOptions.isEmpty()) connectOptions.append(';'); + connectOptions.append("QSQLITE_OPEN_READONLY"); + } + if (flags & OpenFlag::SharedCache) { + if (!connectOptions.isEmpty()) connectOptions.append(';'); + connectOptions.append("QSQLITE_ENABLE_SHARED_CACHE"); + } + + db.setConnectOptions(connectOptions); + db.setDatabaseName(QString(filename)); + + if (!db.open()) { + checkDatabaseError(db); + } + } + + ~DatabaseImpl() { + db.close(); + checkDatabaseError(db); + } + + QSqlDatabase db; +}; + +class StatementImpl { +public: + StatementImpl(const QString& sql, const QSqlDatabase& db) : query(db) { + query.setForwardOnly(true); + if (!query.prepare(sql)) { + checkQueryError(query); + } + } + + ~StatementImpl() { + query.clear(); + } + + QSqlQuery query; + int64_t lastInsertRowId = 0; + int64_t changes = 0; +}; + +template +using optional = std::experimental::optional; + + +Database::Database(const std::string& file, int flags) + : impl(std::make_unique(file.c_str(), flags)) { + assert(impl); +} + +Database::Database(Database &&other) + : impl(std::move(other.impl)) { + assert(impl); +} + +Database &Database::operator=(Database &&other) { + std::swap(impl, other.impl); + assert(impl); + return *this; +} + +Database::~Database() { +} + +Database::operator bool() const { + return impl.operator bool(); +} + +void Database::setBusyTimeout(std::chrono::milliseconds timeout) { + assert(impl); + std::string timeoutStr = mbgl::util::toString(timeout.count()); + QString connectOptions = impl->db.connectOptions(); + if (connectOptions.isEmpty()) { + if (!connectOptions.isEmpty()) connectOptions.append(';'); + connectOptions.append("QSQLITE_BUSY_TIMEOUT=").append(QString::fromStdString(timeoutStr)); + } + if (impl->db.isOpen()) { + impl->db.close(); + } + impl->db.setConnectOptions(connectOptions); + if (!impl->db.open()) { + checkDatabaseError(impl->db); + } +} + +void Database::exec(const std::string &sql) { + assert(impl); + QStringList statements = QString::fromStdString(sql).split(';', QString::SkipEmptyParts); + statements.removeAll("\n"); + for (QString statement : statements) { + if (!statement.endsWith(';')) { + statement.append(';'); + } + QSqlQuery query(impl->db); + query.setForwardOnly(true); + query.prepare(statement); + if (!query.exec()) { + checkQueryError(query); + } + } +} + +Statement Database::prepare(const char *query) { + return Statement(this, query); +} + +Statement::Statement(Database *db, const char *sql) + : impl(std::make_unique(QString(sql), db->impl->db)) { + assert(impl); +} + +Statement::Statement(Statement &&other) + : impl(std::move(other.impl)) { + assert(impl); +} + +Statement &Statement::operator=(Statement &&other) { + assert(impl); + std::swap(impl, other.impl); + return *this; +} + +Statement::~Statement() { +} + +Statement::operator bool() const { + assert(impl); + return impl.operator bool(); +} + +template void Statement::bind(int, int8_t); +template void Statement::bind(int, int32_t); +template void Statement::bind(int, int64_t); +template void Statement::bind(int, uint8_t); +template void Statement::bind(int, bool); + +template +void Statement::bind(int offset, T value) { + assert(impl); + // Field numbering starts at 0. + impl->query.bindValue(offset - 1, QVariant::fromValue(value), QSql::In); + checkQueryError(impl->query); +} + +template <> +void Statement::bind(int offset, std::nullptr_t) { + assert(impl); + // Field numbering starts at 0. + impl->query.bindValue(offset - 1, QVariant(QVariant::Invalid), QSql::In); + checkQueryError(impl->query); +} + +template <> +void Statement::bind(int offset, mbgl::Timestamp value) { + bind(offset, std::chrono::system_clock::to_time_t(value)); +} + +template <> +void Statement::bind(int offset, optional value) { + if (value) { + bind(offset, *value); + } else { + bind(offset, nullptr); + } +} + +template <> +void Statement::bind(int offset, optional value) { + if (value) { + bind(offset, *value); + } else { + bind(offset, nullptr); + } +} + +void Statement::bind(int offset, const char* value, std::size_t length, bool /* retain */) { + assert(impl); + if (length > std::numeric_limits::max()) { + // Kept for consistence with the default implementation. + throw std::range_error("value too long"); + } + + // Field numbering starts at 0. + impl->query.bindValue(offset - 1, QString::fromLatin1(value, length), QSql::In); + checkQueryError(impl->query); +} + +void Statement::bind(int offset, const std::string& value, bool /* retain */) { + // Field numbering starts at 0. + impl->query.bindValue(offset - 1, QString::fromStdString(value), QSql::In); + checkQueryError(impl->query); +} + +void Statement::bindBlob(int offset, const void* value, std::size_t length, bool /* retain */) { + assert(impl); + const char* value = reinterpret_cast(value_); + + // Field numbering starts at 0. + impl->query.bindValue(offset - 1, QByteArray(reinterpret_cast(value), length), QSql::In | QSql::Binary); + checkQueryError(impl->query); +} + +void Statement::bindBlob(int offset, const std::vector& value, bool retain) { + bindBlob(offset, value.data(), value.size(), retain); +} + +bool Statement::run() { + assert(impl); + if (impl->query.isValid()) { + return impl->query.next(); + } + + assert(!impl->query.isActive()); + impl->query.setForwardOnly(true); + if (!impl->query.exec()) { + checkQueryError(impl->query); + } + + impl->lastInsertRowId = impl->query.lastInsertId().value(); + impl->changes = impl->query.numRowsAffected(); + + return impl->query.next(); +} + +template int Statement::get(int); +template int64_t Statement::get(int); +template double Statement::get(int); + +template T Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QVariant value = impl->query.value(offset); + checkQueryError(impl->query); + return value.value(); +} + +template <> std::vector Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QByteArray byteArray = impl->query.value(offset).toByteArray(); + checkQueryError(impl->query); + std::vector blob(byteArray.begin(), byteArray.end()); + return blob; +} + +template <> mbgl::Timestamp Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QVariant value = impl->query.value(offset); + checkQueryError(impl->query); + return std::chrono::time_point_cast( + std::chrono::system_clock::from_time_t(value.value())); +} + +template <> optional Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QVariant value = impl->query.value(offset); + checkQueryError(impl->query); + if (value.isNull()) + return {}; + return { value.value() }; +} + +template <> optional Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QVariant value = impl->query.value(offset); + checkQueryError(impl->query); + if (value.isNull()) + return {}; + return { value.value() }; +} + +template <> std::string Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QByteArray value = impl->query.value(offset).toByteArray(); + checkQueryError(impl->query); + return std::string(value.constData(), value.size()); +} + +template <> optional Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QByteArray value = impl->query.value(offset).toByteArray(); + checkQueryError(impl->query); + if (value.isNull()) + return {}; + return { std::string(value.constData(), value.size()) }; +} + +template <> optional Statement::get(int offset) { + assert(impl && impl->query.isValid()); + QVariant value = impl->query.value(offset); + checkQueryError(impl->query); + if (value.isNull()) + return {}; + return { std::chrono::time_point_cast( + std::chrono::system_clock::from_time_t(value.value())) }; +} + +void Statement::reset() { + assert(impl); + impl->query.finish(); +} + +void Statement::clearBindings() { + // no-op +} + +int64_t Statement::lastInsertRowId() const { + assert(impl); + return impl->lastInsertRowId; +} + +uint64_t Statement::changes() const { + assert(impl); + return (impl->changes < 0 ? 0 : impl->changes); +} + +Transaction::Transaction(Database& db_, Mode mode) + : db(db_) { + switch (mode) { + case Deferred: + db.exec("BEGIN DEFERRED TRANSACTION"); + break; + case Immediate: + db.exec("BEGIN IMMEDIATE TRANSACTION"); + break; + case Exclusive: + db.exec("BEGIN EXCLUSIVE TRANSACTION"); + break; + } +} + +Transaction::~Transaction() { + if (needRollback) { + try { + rollback(); + } catch (...) { + // Ignore failed rollbacks in destructor. + } + } +} + +void Transaction::commit() { + needRollback = false; + db.exec("COMMIT TRANSACTION"); +} + +void Transaction::rollback() { + needRollback = false; + db.exec("ROLLBACK TRANSACTION"); +} + +} // namespace sqlite +} // namespace mapbox diff --git a/test/storage/offline_database.test.cpp b/test/storage/offline_database.test.cpp index 5e8da106da..2e25835d80 100644 --- a/test/storage/offline_database.test.cpp +++ b/test/storage/offline_database.test.cpp @@ -80,25 +80,6 @@ private: } // namespace -TEST(OfflineDatabase, Statement) { - using namespace mbgl; - - mapbox::sqlite::Database db(":memory:", mapbox::sqlite::ReadWrite | mapbox::sqlite::Create); - db.exec("CREATE TABLE test (id INTEGER)"); - mapbox::sqlite::Statement stmt1 = db.prepare("INSERT INTO test (id) VALUES (?1)"); - stmt1.bind(1, 0); - stmt1.run(); - ASSERT_EQ(stmt1.lastInsertRowId(), 1); - ASSERT_EQ(stmt1.changes(), 1); - - mapbox::sqlite::Statement stmt2 = db.prepare("INSERT INTO test (id) VALUES (?1)"); - stmt2.bind(1, 0); - stmt2.run(); - ASSERT_EQ(stmt1.lastInsertRowId(), 1); - ASSERT_EQ(stmt2.lastInsertRowId(), 2); - ASSERT_EQ(stmt2.changes(), 1); -} - TEST(OfflineDatabase, TEST_REQUIRES_WRITE(Create)) { using namespace mbgl; diff --git a/test/storage/sqlite.test.cpp b/test/storage/sqlite.test.cpp new file mode 100644 index 0000000000..dbd7a09868 --- /dev/null +++ b/test/storage/sqlite.test.cpp @@ -0,0 +1,27 @@ +#include + +#include +#include + +TEST(SQLite, Statement) { + using namespace mbgl; + + mapbox::sqlite::Database db(":memory:", mapbox::sqlite::Create | mapbox::sqlite::ReadWrite); + db.exec("CREATE TABLE test (id INTEGER);"); + + mapbox::sqlite::Statement stmt1 = db.prepare("INSERT INTO test (id) VALUES (?1);"); + ASSERT_EQ(stmt1.lastInsertRowId(), 0); + ASSERT_EQ(stmt1.changes(), 0u); + stmt1.bind(1, 10); + stmt1.run(); + ASSERT_EQ(stmt1.lastInsertRowId(), 1); + ASSERT_EQ(stmt1.changes(), 1u); + + mapbox::sqlite::Statement stmt2 = db.prepare("INSERT INTO test (id) VALUES (?1);"); + ASSERT_EQ(stmt2.lastInsertRowId(), 0); + ASSERT_EQ(stmt2.changes(), 0u); + stmt2.bind(1, 20); + stmt2.run(); + ASSERT_EQ(stmt2.lastInsertRowId(), 2); + ASSERT_EQ(stmt2.changes(), 1u); +} -- cgit v1.2.1 From 1065917e59c0238b63dccf8cba46415fffe8da57 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Wed, 11 Jan 2017 18:09:23 -0200 Subject: [Qt] Save a copy when using binary data if possible --- platform/qt/src/sqlite3.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp index 57725b8233..b339cb14fa 100644 --- a/platform/qt/src/sqlite3.cpp +++ b/platform/qt/src/sqlite3.cpp @@ -233,7 +233,7 @@ void Statement::bind(int offset, optional value) { } } -void Statement::bind(int offset, const char* value, std::size_t length, bool /* retain */) { +void Statement::bind(int offset, const char* value, std::size_t length, bool retain) { assert(impl); if (length > std::numeric_limits::max()) { // Kept for consistence with the default implementation. @@ -241,22 +241,23 @@ void Statement::bind(int offset, const char* value, std::size_t length, bool /* } // Field numbering starts at 0. - impl->query.bindValue(offset - 1, QString::fromLatin1(value, length), QSql::In); + impl->query.bindValue(offset - 1, retain ? QByteArray(value, length) : + QByteArray::fromRawData(value, length), QSql::In); + checkQueryError(impl->query); } -void Statement::bind(int offset, const std::string& value, bool /* retain */) { - // Field numbering starts at 0. - impl->query.bindValue(offset - 1, QString::fromStdString(value), QSql::In); - checkQueryError(impl->query); +void Statement::bind(int offset, const std::string& value, bool retain) { + bind(offset, value.data(), value.size(), retain); } -void Statement::bindBlob(int offset, const void* value, std::size_t length, bool /* retain */) { - assert(impl); +void Statement::bindBlob(int offset, const void* value_, std::size_t length, bool retain) { const char* value = reinterpret_cast(value_); // Field numbering starts at 0. - impl->query.bindValue(offset - 1, QByteArray(reinterpret_cast(value), length), QSql::In | QSql::Binary); + impl->query.bindValue(offset - 1, retain ? QByteArray(value, length) : + QByteArray::fromRawData(value, length), QSql::In | QSql::Binary); + checkQueryError(impl->query); } -- cgit v1.2.1 From 1c759cfa09480058243c1896e1340ee06b3f2e14 Mon Sep 17 00:00:00 2001 From: "Thiago Marcos P. Santos" Date: Wed, 11 Jan 2017 20:21:11 -0200 Subject: [Qt] Explicitly map the `bool` binder to `int` On Qt4 and Qt5 the QVariant conversion from bool behaves differently. --- platform/qt/src/sqlite3.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp index b339cb14fa..00ad178fdf 100644 --- a/platform/qt/src/sqlite3.cpp +++ b/platform/qt/src/sqlite3.cpp @@ -192,7 +192,6 @@ template void Statement::bind(int, int8_t); template void Statement::bind(int, int32_t); template void Statement::bind(int, int64_t); template void Statement::bind(int, uint8_t); -template void Statement::bind(int, bool); template void Statement::bind(int offset, T value) { @@ -210,6 +209,11 @@ void Statement::bind(int offset, std::nullptr_t) { checkQueryError(impl->query); } +template <> +void Statement::bind(int offset, bool value) { + bind(offset, static_cast(value)); +} + template <> void Statement::bind(int offset, mbgl::Timestamp value) { bind(offset, std::chrono::system_clock::to_time_t(value)); -- cgit v1.2.1 From 00b4baff5f14e37703f893473bd1c78778b9f63f Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 18 Jan 2017 16:13:06 +0100 Subject: [Qt] Check for Qt SQLite database driver --- platform/qt/src/sqlite3.cpp | 41 +++++++++++++++++++++-------------------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/platform/qt/src/sqlite3.cpp b/platform/qt/src/sqlite3.cpp index 00ad178fdf..367b51811d 100644 --- a/platform/qt/src/sqlite3.cpp +++ b/platform/qt/src/sqlite3.cpp @@ -17,8 +17,6 @@ #include #include -static uint32_t count = 0; - namespace mapbox { namespace sqlite { @@ -53,9 +51,12 @@ void checkDatabaseError(const QSqlDatabase &db) { class DatabaseImpl { public: - DatabaseImpl(const char* filename, int flags) - : db(QSqlDatabase::addDatabase("QSQLITE", QString::fromStdString(mbgl::util::toString(count++)))) { - QString connectOptions = db.connectOptions(); + DatabaseImpl(const char* filename, int flags) { + if (!QSqlDatabase::drivers().contains("QSQLITE")) { + throw Exception { Exception::Code::CANTOPEN, "SQLite driver not found." }; + } + db.reset(new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE", QString::number(qrand())))); + QString connectOptions = db->connectOptions(); if (flags & OpenFlag::ReadOnly) { if (!connectOptions.isEmpty()) connectOptions.append(';'); connectOptions.append("QSQLITE_OPEN_READONLY"); @@ -65,20 +66,20 @@ public: connectOptions.append("QSQLITE_ENABLE_SHARED_CACHE"); } - db.setConnectOptions(connectOptions); - db.setDatabaseName(QString(filename)); + db->setConnectOptions(connectOptions); + db->setDatabaseName(QString(filename)); - if (!db.open()) { - checkDatabaseError(db); + if (!db->open()) { + checkDatabaseError(*db); } } ~DatabaseImpl() { - db.close(); - checkDatabaseError(db); + db->close(); + checkDatabaseError(*db); } - QSqlDatabase db; + QScopedPointer db; }; class StatementImpl { @@ -129,17 +130,17 @@ Database::operator bool() const { void Database::setBusyTimeout(std::chrono::milliseconds timeout) { assert(impl); std::string timeoutStr = mbgl::util::toString(timeout.count()); - QString connectOptions = impl->db.connectOptions(); + QString connectOptions = impl->db->connectOptions(); if (connectOptions.isEmpty()) { if (!connectOptions.isEmpty()) connectOptions.append(';'); connectOptions.append("QSQLITE_BUSY_TIMEOUT=").append(QString::fromStdString(timeoutStr)); } - if (impl->db.isOpen()) { - impl->db.close(); + if (impl->db->isOpen()) { + impl->db->close(); } - impl->db.setConnectOptions(connectOptions); - if (!impl->db.open()) { - checkDatabaseError(impl->db); + impl->db->setConnectOptions(connectOptions); + if (!impl->db->open()) { + checkDatabaseError(*impl->db); } } @@ -151,7 +152,7 @@ void Database::exec(const std::string &sql) { if (!statement.endsWith(';')) { statement.append(';'); } - QSqlQuery query(impl->db); + QSqlQuery query(*impl->db); query.setForwardOnly(true); query.prepare(statement); if (!query.exec()) { @@ -165,7 +166,7 @@ Statement Database::prepare(const char *query) { } Statement::Statement(Database *db, const char *sql) - : impl(std::make_unique(QString(sql), db->impl->db)) { + : impl(std::make_unique(QString(sql), *db->impl->db)) { assert(impl); } -- cgit v1.2.1 From ea36c519689ddd327cb70311d484af593bc8883f Mon Sep 17 00:00:00 2001 From: Bruno de Oliveira Abinader Date: Wed, 11 Jan 2017 16:13:08 -0500 Subject: [build] Update Travis Qt{4,5} bot dependencies --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index f29db208e6..eb93734d10 100644 --- a/.travis.yml +++ b/.travis.yml @@ -36,14 +36,14 @@ addons_shortcuts: packages: - *common_packages - *gcc5_packages - - [ 'libjemalloc-dev', 'mesa-utils', 'qt4-default' ] + - [ 'libjemalloc-dev', 'mesa-utils', 'qt4-default', 'libqt4-sql-mysql' ] addons_qt5: &qt5 apt: sources: *common_sources packages: - *common_packages - *gcc5_packages - - [ 'mesa-utils', 'libc6-dbg', 'qt5-default', 'libqt5opengl5-dev', 'qtdeclarative5-dev', 'qtpositioning5-dev', 'qtlocation5-dev' ] + - [ 'mesa-utils', 'libc6-dbg', 'qt5-default', 'libqt5opengl5-dev', 'qtdeclarative5-dev', 'qtpositioning5-dev', 'qtlocation5-dev', 'libqt5sql5-sqlite' ] env: global: -- cgit v1.2.1 From 0ccc255f0e097b823537c37495b39de554f600fb Mon Sep 17 00:00:00 2001 From: John Firebaugh Date: Thu, 19 Jan 2017 13:13:06 -0800 Subject: [linux] mesa 13.0.3 --- .mason | 2 +- .travis.yml | 11 +++++-- CMakeLists.txt | 8 +---- platform/linux/config.cmake | 25 +++++++--------- scripts/travis_setup.sh | 5 ++-- scripts/valgrind.sup | 71 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 94 insertions(+), 28 deletions(-) diff --git a/.mason b/.mason index 0742f24ad5..25fa17ac8f 160000 --- a/.mason +++ b/.mason @@ -1 +1 @@ -Subproject commit 0742f24ad5c49b8806abb0023f4a4f531bb18db8 +Subproject commit 25fa17ac8f09315f92047116f37242d6d05f904d diff --git a/.travis.yml b/.travis.yml index eb93734d10..17aa83e5db 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,7 +10,6 @@ addons: - &common_packages [ 'libllvm3.8v4', 'cmake', 'cmake-data' ] - &clang38_packages [ 'clang-3.8', 'libstdc++-5-dev', 'libstdc++6' ] - &gcc5_packages [ 'gcc-5', 'g++-5' ] - - &egl_packages [ 'libgles2-mesa-dev', 'libgbm-dev' ] - &glfw_packages [ 'libxrandr-dev', 'libxcursor-dev', 'libxinerama-dev' ] addons_shortcuts: @@ -20,7 +19,6 @@ addons_shortcuts: packages: - *common_packages - *clang38_packages - - *egl_packages - *glfw_packages addons_gcc5: &gcc5 apt: @@ -28,7 +26,6 @@ addons_shortcuts: packages: - *common_packages - *gcc5_packages - - *egl_packages - *glfw_packages addons_qt4: &qt4 apt: @@ -94,6 +91,7 @@ matrix: addons: *clang38 before_script: - mapbox_start_xvfb + - mapbox_export_mesa_library_path script: - nvm install 4 - nvm use 4 @@ -112,9 +110,12 @@ matrix: env: BUILDTYPE=Release _CXX=clang++-3.8 _CC=clang-3.8 WITH_EGL=1 addons: *clang38 before_script: + # fglrx causes the GLX extension to be unavailable + - sudo apt-get purge -qq fglrx - export PACKAGE_JSON_VERSION=$(node -e "console.log(require('./package.json').version)") - export PUBLISH=$([[ "${TRAVIS_TAG:-}" == "node-v${PACKAGE_JSON_VERSION}" ]] && echo true) - mapbox_start_xvfb + - mapbox_export_mesa_library_path script: - nvm install 4 - nvm use 4 @@ -136,6 +137,7 @@ matrix: addons: *gcc5 before_script: - mapbox_start_xvfb + - mapbox_export_mesa_library_path after_script: - ccache --show-stats - ./platform/linux/scripts/coveralls.sh @@ -150,6 +152,7 @@ matrix: addons: *gcc5 before_script: - mapbox_start_xvfb + - mapbox_export_mesa_library_path # EGL - Clang 3.8 - Debug - os: linux @@ -161,6 +164,7 @@ matrix: addons: *clang38 before_script: - mapbox_start_xvfb + - mapbox_export_mesa_library_path # EGL - Clang 3.8 - Release - os: linux @@ -172,6 +176,7 @@ matrix: addons: *clang38 before_script: - mapbox_start_xvfb + - mapbox_export_mesa_library_path # Qt 4 - GCC 5 - Release - os: linux diff --git a/CMakeLists.txt b/CMakeLists.txt index 92b0715b5e..6265c05069 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,14 +19,8 @@ if(WITH_OSMESA AND WITH_EGL) message(FATAL_ERROR "WITH_OSMESA and WITH_EGL are mutually exclusive.") endif() -if(WITH_OSMESA) - # Default mesa mason binary is OSMesa. - set(MASON_MESA_SUFFIX "") -elseif(WITH_EGL) +if(WITH_EGL) add_definitions(-DMBGL_USE_GLES2=1) - set(MASON_MESA_SUFFIX "-egl") -else() - set(MASON_MESA_SUFFIX "-glx") endif() if(IS_CI_BUILD) diff --git a/platform/linux/config.cmake b/platform/linux/config.cmake index dcd4692a18..13f3edb96f 100644 --- a/platform/linux/config.cmake +++ b/platform/linux/config.cmake @@ -1,7 +1,5 @@ mason_use(glfw VERSION 3.2.1) -if(IS_CI_BUILD AND NOT WITH_EGL) - mason_use(mesa VERSION 13.0.0${MASON_MESA_SUFFIX}) -endif() +mason_use(mesa VERSION 13.0.3) mason_use(boost_libprogram_options VERSION 1.62.0${MASON_CXXABI_SUFFIX}) mason_use(sqlite VERSION 3.14.2) mason_use(libuv VERSION 1.9.1) @@ -16,19 +14,21 @@ mason_use(icu VERSION 58.1) include(cmake/loop-uv.cmake) macro(mbgl_platform_core) + target_add_mason_package(mbgl-core PUBLIC mesa) + if(WITH_OSMESA) target_sources(mbgl-core PRIVATE platform/default/headless_backend_osmesa.cpp PRIVATE platform/default/mbgl/gl/headless_display.cpp ) - target_add_mason_package(mbgl-core PUBLIC mesa) + target_link_libraries(mbgl-core + PUBLIC -lOSMesa + ) elseif(WITH_EGL) target_sources(mbgl-core PRIVATE platform/linux/src/headless_backend_egl.cpp PRIVATE platform/linux/src/headless_display_egl.cpp ) - # TODO: Provide surface-less EGL mesa for CI builds. - # https://github.com/mapbox/mapbox-gl-native/issues/7020 target_link_libraries(mbgl-core PUBLIC -lGLESv2 PUBLIC -lEGL @@ -39,15 +39,10 @@ macro(mbgl_platform_core) PRIVATE platform/linux/src/headless_backend_glx.cpp PRIVATE platform/linux/src/headless_display_glx.cpp ) - if (IS_CI_BUILD) - target_add_mason_package(mbgl-core PUBLIC mesa) - target_link_libraries(mbgl-core PUBLIC -lX11) - else() - target_link_libraries(mbgl-core - PUBLIC -lGL - PUBLIC -lX11 - ) - endif() + target_link_libraries(mbgl-core + PUBLIC -lGL + PUBLIC -lX11 + ) endif() target_sources(mbgl-core diff --git a/scripts/travis_setup.sh b/scripts/travis_setup.sh index 65a2945fdc..cdf36be363 100755 --- a/scripts/travis_setup.sh +++ b/scripts/travis_setup.sh @@ -58,8 +58,9 @@ export -f mapbox_start_xvfb function mapbox_export_mesa_library_path { # Install and set up to load a more recent version of mesa mapbox_time "install_mesa" \ - mason install mesa 13.0.0-glx - export LD_LIBRARY_PATH="`mason prefix mesa 13.0.0-glx`/lib:${LD_LIBRARY_PATH:-}" + mason install mesa 13.0.3 + export LD_LIBRARY_PATH="`mason prefix mesa 13.0.3`/lib:${LD_LIBRARY_PATH:-}" + export LIBGL_DRIVERS_PATH="`mason prefix mesa 13.0.3`/lib/dri" } export -f mapbox_export_mesa_library_path diff --git a/scripts/valgrind.sup b/scripts/valgrind.sup index ea3e3d635a..fc6bfaac58 100644 --- a/scripts/valgrind.sup +++ b/scripts/valgrind.sup @@ -266,3 +266,74 @@ fun:_ZN4mbgl4util10write_fileERKSsS2_ ... } +{ + Ubuntu 14.04 - Travis + mesa 13.0.3 + Memcheck:Cond + fun:_ZN12_GLOBAL__N_117PeepholeOptimizer20runOnMachineFunctionERN4llvm15MachineFunctionE + fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE + fun:_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE + fun:_ZN4llvm5MCJIT10emitObjectEPNS_6ModuleE + fun:_ZN4llvm5MCJIT21generateCodeForModuleEPNS_6ModuleE + fun:_ZN4llvm5MCJIT14finalizeObjectEv + fun:LLVMGetPointerToGlobal + fun:gallivm_jit_function + fun:generate_variant + fun:llvmpipe_update_fs +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.3 + Memcheck:Cond + fun:_ZNK4llvm12X86InstrInfo13reMaterializeERNS_17MachineBasicBlockENS1_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS4_EEEEjjPKS4_RKNS_18TargetRegisterInfoE + fun:_ZN12_GLOBAL__N_117RegisterCoalescer23reMaterializeTrivialDefERKN4llvm13CoalescerPairEPNS1_12MachineInstrERb + fun:_ZN12_GLOBAL__N_117RegisterCoalescer8joinCopyEPN4llvm12MachineInstrERb + fun:_ZN12_GLOBAL__N_117RegisterCoalescer20runOnMachineFunctionERN4llvm15MachineFunctionE + fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE + fun:_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE + fun:_ZN4llvm5MCJIT10emitObjectEPNS_6ModuleE + fun:_ZN4llvm5MCJIT21generateCodeForModuleEPNS_6ModuleE + fun:_ZN4llvm5MCJIT14finalizeObjectEv + fun:LLVMGetPointerToGlobal +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.3 + Memcheck:Cond + fun:_ZNK4llvm12X86InstrInfo13reMaterializeERNS_17MachineBasicBlockENS1_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS4_EEEEjjPKS4_RKNS_18TargetRegisterInfoE + fun:_ZN4llvm13LiveRangeEdit15rematerializeAtERNS_17MachineBasicBlockENS1_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS4_EEEEjRKNS0_5RematERKNS_18TargetRegisterInfoEb + fun:_ZN12_GLOBAL__N_113InlineSpiller5spillERN4llvm13LiveRangeEditE + fun:_ZN12_GLOBAL__N_18RAGreedy17selectOrSplitImplERN4llvm12LiveIntervalERNS1_15SmallVectorImplIjEERNS1_8SmallSetIjLj16ESt4lessIjEEEj + fun:_ZN12_GLOBAL__N_18RAGreedy13selectOrSplitERN4llvm12LiveIntervalERNS1_15SmallVectorImplIjEE + fun:_ZN4llvm12RegAllocBase16allocatePhysRegsEv + fun:_ZN12_GLOBAL__N_18RAGreedy20runOnMachineFunctionERN4llvm15MachineFunctionE + fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE + fun:_ZN4llvm6legacy15PassManagerImpl3runERNS_6ModuleE + fun:_ZN4llvm5MCJIT10emitObjectEPNS_6ModuleE +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.3 + Memcheck:Cond + fun:_ZNK4llvm12X86InstrInfo13reMaterializeERNS_17MachineBasicBlockENS1_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS4_EEEEjjPKS4_RKNS_18TargetRegisterInfoE + fun:_ZN4llvm13LiveRangeEdit15rematerializeAtERNS_17MachineBasicBlockENS1_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS4_EEEEjRKNS0_5RematERKNS_18TargetRegisterInfoEb + fun:_ZN4llvm11SplitEditor13defFromParentEjPNS_6VNInfoENS_9SlotIndexERNS_17MachineBasicBlockENS4_15bundle_iteratorINS_12MachineInstrENS_14ilist_iteratorIS7_EEEE + fun:_ZN4llvm11SplitEditor16splitRegOutBlockERKNS_13SplitAnalysis9BlockInfoEjNS_9SlotIndexE + fun:_ZN12_GLOBAL__N_18RAGreedy13doRegionSplitERN4llvm12LiveIntervalEjbRNS1_15SmallVectorImplIjEE + fun:_ZN12_GLOBAL__N_18RAGreedy17selectOrSplitImplERN4llvm12LiveIntervalERNS1_15SmallVectorImplIjEERNS1_8SmallSetIjLj16ESt4lessIjEEEj + fun:_ZN12_GLOBAL__N_18RAGreedy13selectOrSplitERN4llvm12LiveIntervalERNS1_15SmallVectorImplIjEE + fun:_ZN4llvm12RegAllocBase16allocatePhysRegsEv + fun:_ZN12_GLOBAL__N_18RAGreedy20runOnMachineFunctionERN4llvm15MachineFunctionE + fun:_ZN4llvm19MachineFunctionPass13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager13runOnFunctionERNS_8FunctionE + fun:_ZN4llvm13FPPassManager11runOnModuleERNS_6ModuleE +} +{ + Ubuntu 14.04 - Travis + mesa 13.0.3 + Memcheck:Leak + match-leak-kinds: definite + fun:_Znwm + ... +} -- cgit v1.2.1 From 7cf317c08ce89d10a8ac01cd21caf035bfc9dc5e Mon Sep 17 00:00:00 2001 From: Tobrun Date: Mon, 23 Jan 2017 18:43:57 +0100 Subject: [android] - when updating positon, wait for render call to invalidate updated marker position, correct camera invalidation for all moveCamera method invocations (#7794) --- .../src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java | 1 + .../src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java index c1b643eb4c..29f6d4dccf 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/annotations/MarkerView.java @@ -342,6 +342,7 @@ public class MarkerView extends Marker { public void setPosition(LatLng position) { super.setPosition(position); if (markerViewManager != null) { + markerViewManager.setWaitingForRenderInvoke(true); markerViewManager.update(); } } diff --git a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java index 9e8073edb8..a4248a1fb5 100644 --- a/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java +++ b/platform/android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/maps/MapboxMap.java @@ -515,9 +515,6 @@ public final class MapboxMap { @UiThread public final void moveCamera(CameraUpdate update) { moveCamera(update, null); - // MapChange.REGION_DID_CHANGE_ANIMATED is not called for `jumpTo` - // invalidate camera position to provide OnCameraChange event. - invalidateCameraPosition(); } /** @@ -534,6 +531,9 @@ public final class MapboxMap { @Override public void run() { transform.moveCamera(MapboxMap.this, update, callback); + // MapChange.REGION_DID_CHANGE_ANIMATED is not called for `jumpTo` + // invalidate camera position to provide OnCameraChange event. + invalidateCameraPosition(); } }); } -- cgit v1.2.1 From 9b726441911224e27c0fd001f43dbeeee42e3079 Mon Sep 17 00:00:00 2001 From: Cameron Mace Date: Mon, 23 Jan 2017 13:27:02 -0500 Subject: Test app refactor (#7598) --- .../src/main/AndroidManifest.xml | 318 +++++++++----- .../testapp/activity/FeatureOverviewActivity.java | 20 +- .../annotation/AddRemoveMarkerActivity.java | 27 +- .../annotation/AnimatedMarkerActivity.java | 32 +- .../activity/annotation/BulkMarkerActivity.java | 52 +-- .../annotation/DynamicMarkerChangeActivity.java | 23 - .../activity/annotation/MarkerViewActivity.java | 23 - .../annotation/MarkerViewScaleActivity.java | 179 -------- .../annotation/MarkerViewsInRectangleActivity.java | 26 -- .../activity/annotation/PolygonActivity.java | 17 +- .../activity/annotation/PolylineActivity.java | 22 +- .../annotation/PressForMarkerActivity.java | 14 - .../camera/CameraAnimationTypeActivity.java | 23 - .../activity/camera/CameraPositionActivity.java | 28 +- .../activity/camera/LatLngBoundsActivity.java | 28 +- .../activity/camera/ManualZoomActivity.java | 15 - .../activity/camera/MaxMinZoomActivity.java | 23 - .../activity/customlayer/CustomLayerActivity.java | 23 +- .../activity/directions/DirectionsActivity.java | 213 --------- .../QueryRenderedFeaturesBoxCountActivity.java | 27 -- .../QueryRenderedFeaturesBoxHighlightActivity.java | 28 -- ...ueryRenderedFeaturesBoxSymbolCountActivity.java | 27 -- .../QueryRenderedFeaturesPropertiesActivity.java | 35 +- .../activity/fragment/MapFragmentActivity.java | 23 - .../fragment/SupportMapFragmentActivity.java | 23 - .../activity/fragment/ViewPagerActivity.java | 24 -- .../activity/geocoding/GeocoderActivity.java | 205 --------- .../activity/imagegenerator/PrintActivity.java | 24 -- .../activity/imagegenerator/SnapshotActivity.java | 23 - .../DynamicInfoWindowAdapterActivity.java | 27 -- .../activity/infowindow/InfoWindowActivity.java | 18 +- .../infowindow/InfoWindowAdapterActivity.java | 23 - .../activity/maplayout/DebugModeActivity.java | 29 +- .../activity/maplayout/DoubleMapActivity.java | 23 - .../activity/maplayout/MapInDialogActivity.java | 23 - .../activity/maplayout/MapPaddingActivity.java | 20 +- .../activity/maplayout/SimpleMapActivity.java | 23 - .../activity/navigation/CarDrivingActivity.java | 201 --------- .../navigation/LocationPickerActivity.java | 477 --------------------- .../testapp/activity/offline/OfflineActivity.java | 23 - .../activity/offline/UpdateMetadataActivity.java | 23 - .../activity/style/CircleLayerActivity.java | 30 +- .../activity/style/CustomSpriteActivity.java | 28 +- .../activity/style/GeoJsonClusteringActivity.java | 26 +- .../activity/style/RealTimeGeoJsonActivity.java | 28 +- .../activity/style/RuntimeStyleActivity.java | 18 - .../testapp/activity/style/StyleFileActivity.java | 23 - .../activity/style/SymbolLayerActivity.java | 15 - .../userlocation/MyLocationDrawableActivity.java | 23 - .../userlocation/MyLocationTintActivity.java | 27 +- .../userlocation/MyLocationToggleActivity.java | 82 ++-- .../src/main/res/drawable/line_divider.xml | 7 +- .../main/res/layout/activity_add_remove_marker.xml | 12 +- .../src/main/res/layout/activity_add_sprite.xml | 17 +- .../main/res/layout/activity_animated_marker.xml | 17 +- .../res/layout/activity_camera_animation_types.xml | 19 +- .../main/res/layout/activity_camera_position.xml | 46 +- .../src/main/res/layout/activity_camera_test.xml | 12 +- .../src/main/res/layout/activity_car_driving.xml | 24 -- .../src/main/res/layout/activity_circlelayer.xml | 21 +- .../src/main/res/layout/activity_custom_layer.xml | 50 +-- .../src/main/res/layout/activity_debug_mode.xml | 88 ++-- .../src/main/res/layout/activity_default.xml | 13 +- .../main/res/layout/activity_dynamic_marker.xml | 66 +-- .../main/res/layout/activity_feature_overview.xml | 14 + .../res/layout/activity_geojson_clustering.xml | 17 +- .../src/main/res/layout/activity_infowindow.xml | 14 +- .../res/layout/activity_infowindow_adapter.xml | 14 +- .../main/res/layout/activity_location_picker.xml | 41 -- .../src/main/res/layout/activity_main.xml | 20 - .../src/main/res/layout/activity_manual_zoom.xml | 25 +- .../src/main/res/layout/activity_map_fragment.xml | 12 +- .../src/main/res/layout/activity_map_in_dialog.xml | 7 - .../src/main/res/layout/activity_map_padding.xml | 10 - .../src/main/res/layout/activity_map_simple.xml | 16 +- .../src/main/res/layout/activity_marker_bulk.xml | 25 +- .../src/main/res/layout/activity_marker_view.xml | 11 +- .../res/layout/activity_marker_view_in_rect.xml | 12 +- .../main/res/layout/activity_marker_view_scale.xml | 61 --- .../src/main/res/layout/activity_maxmin_zoom.xml | 18 +- .../main/res/layout/activity_metadata_update.xml | 14 +- .../src/main/res/layout/activity_multi_map.xml | 11 +- .../layout/activity_my_location_customization.xml | 12 +- .../res/layout/activity_my_location_dot_color.xml | 9 - .../res/layout/activity_my_location_toggle.xml | 45 +- .../src/main/res/layout/activity_offline.xml | 38 +- .../src/main/res/layout/activity_polygon.xml | 15 - .../src/main/res/layout/activity_polyline.xml | 14 +- .../main/res/layout/activity_press_for_marker.xml | 21 +- .../src/main/res/layout/activity_print.xml | 58 +-- .../res/layout/activity_query_features_box.xml | 14 +- .../res/layout/activity_query_features_point.xml | 13 +- .../src/main/res/layout/activity_runtime_style.xml | 13 +- .../src/main/res/layout/activity_snapshot.xml | 15 +- .../src/main/res/layout/activity_style_file.xml | 20 +- .../src/main/res/layout/activity_symbollayer.xml | 19 +- .../src/main/res/layout/activity_viewpager.xml | 18 +- .../main/res/layout/activity_visible_bounds.xml | 12 +- .../src/main/res/layout/item_main_feature.xml | 23 +- .../src/main/res/layout/section_main_layout.xml | 13 +- .../src/main/res/layout/view_text_marker.xml | 2 +- .../src/main/res/menu/menu_bulk_marker.xml | 9 + .../src/main/res/values-v21/styles.xml | 6 +- .../src/main/res/values/colors.xml | 19 +- .../src/main/res/values/dimens.xml | 1 + .../src/main/res/values/strings.xml | 23 +- .../src/main/res/values/styles.xml | 13 +- 107 files changed, 666 insertions(+), 3268 deletions(-) delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewScaleActivity.java delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/directions/DirectionsActivity.java delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/geocoding/GeocoderActivity.java delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/CarDrivingActivity.java delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/LocationPickerActivity.java delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_car_driving.xml create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_feature_overview.xml delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_location_picker.xml delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_main.xml delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_marker_view_scale.xml delete mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_polygon.xml create mode 100644 platform/android/MapboxGLAndroidSDKTestApp/src/main/res/menu/menu_bulk_marker.xml diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml index 684633bad1..228ad32b67 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/AndroidManifest.xml @@ -1,28 +1,29 @@ + package="com.mapbox.mapboxsdk.testapp"> - - - - - + + + + + - - + + + android:value="@string/category_infowindow"/> + + android:value="@string/category_infowindow"/> + + android:value="@string/category_infowindow"/> + + android:value="@string/category_annotation"/> + + android:value="@string/category_annotation"/> + + android:value="@string/category_annotation"/> + + android:value="@string/category_annotation"/> + + android:value="@string/category_camera"/> + + android:value="@string/category_camera"/> + + android:value="@string/category_camera"/> + + android:value="@string/category_fragment"/> + + android:value="@string/category_fragment"/> + + android:value="@string/category_fragment"/> + + android:value="@string/category_camera"/> + + android:value="@string/category_camera"/> + + android:value="@string/category_custom_layer"/> + + android:label="@string/activity_user_tracking_mode" + android:theme="@style/NoActionBar"> + android:value="@string/category_userlocation"/> + + android:value="@string/category_userlocation"/> + + android:value="@string/category_userlocation"/> + + android:value="@string/category_userlocation"/> + + android:value="@string/category_annotation"/> + - - + android:value="@string/category_annotation"/> - - - + android:name="android.support.PARENT_ACTIVITY" + android:value=".activity.FeatureOverviewActivity"/> + android:label="@string/activity_scroll_by" + android:theme="@style/NoActionBar"> + android:value="@string/category_camera"/> + + android:value="@string/category_maplayout"/> + + android:value="@string/category_maplayout"/> + + android:value="@string/category_offline"/> + + android:value="@string/category_offline"/> + + android:value="@string/category_imagegenerator"/> + + android:value="@string/category_maplayout"/> + - - - - - + android:value="@string/category_annotation"/> + android:name="android.support.PARENT_ACTIVITY" + android:value=".activity.FeatureOverviewActivity"/> + android:value="@string/category_fragment"/> + + android:value="@string/category_maplayout"/> + + android:value="@string/category_maplayout"/> + + android:value="@string/category_style"/> + + + + + + + android:value="@string/category_style"/> + - + android:value="@string/category_style"/> + + android:value="@string/category_style"/> + + android:value="@string/category_style"/> + + android:value="@string/category_imagegenerator"/> + @@ -388,7 +491,10 @@ android:label="@string/activity_query_rendered_feature_properties"> + android:value="@string/category_features"/> + + android:value="@string/category_features"/> + + android:value="@string/category_features"/> + - - + android:value="@string/category_features"/> + android:name="android.support.PARENT_ACTIVITY" + android:value=".activity.FeatureOverviewActivity"/> + android:value="@string/category_annotation"/> + + android:value="@string/category_maplayout"/> + + android:value="@string/category_annotation"/> + - - - + + + + android:value="https://cloudfront-staging.tilestream.net"/> + android:value="pk.eyJ1IjoiYmxzdGFnaW5nIiwiYSI6ImNpdDF3OHpoaTAwMDcyeXA5Y3Z0Nmk2dzEifQ.0IfB7v5Qbm2MGVYt8Kb8fg"/> - + \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java index 9ba51e2694..3f95f70aef 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/FeatureOverviewActivity.java @@ -14,14 +14,9 @@ import android.support.annotation.StringRes; import android.support.design.widget.Snackbar; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - import android.view.View; import com.mapbox.mapboxsdk.testapp.R; @@ -35,6 +30,8 @@ import java.util.Collections; import java.util.Comparator; import java.util.List; +import timber.log.Timber; + public class FeatureOverviewActivity extends AppCompatActivity { private static final String KEY_STATE_FEATURES = "featureList"; @@ -46,16 +43,7 @@ public class FeatureOverviewActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_main); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - toolbar.setTitle(getString(R.string.app_name)); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setElevation(getResources().getDimension(R.dimen.toolbar_shadow)); - } + setContentView(R.layout.activity_feature_overview); recyclerView = (RecyclerView) findViewById(R.id.recyclerView); recyclerView.setLayoutManager(new LinearLayoutManager(this)); @@ -218,8 +206,6 @@ public class FeatureOverviewActivity extends AppCompatActivity { List requiresPermissionActvities = new ArrayList() { { add(resources.getString(R.string.activity_double_map)); - add(getString(R.string.activity_location_picker)); - add(getString(R.string.activity_car_driving)); } }; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AddRemoveMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AddRemoveMarkerActivity.java index 6c56aa4a7a..5e4b4bf4d7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AddRemoveMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AddRemoveMarkerActivity.java @@ -1,13 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import com.mapbox.mapboxsdk.annotations.Icon; import com.mapbox.mapboxsdk.annotations.IconFactory; @@ -21,6 +15,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; +import timber.log.Timber; + public class AddRemoveMarkerActivity extends AppCompatActivity { public static final double THRESHOLD = 5.0; @@ -40,15 +36,6 @@ public class AddRemoveMarkerActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_remove_marker); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - final Icon icon1 = IconFactory.getInstance(this).fromResource(R.drawable.ic_arsenal); final Icon icon2 = IconFactory.getInstance(this).fromResource(R.drawable.ic_chelsea); @@ -170,14 +157,4 @@ public class AddRemoveMarkerActivity extends AppCompatActivity { super.onDestroy(); mapView.onDestroy(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - } - return super.onOptionsItemSelected(item); - } } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java index 50e6c44b6e..ad1306e4cd 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/AnimatedMarkerActivity.java @@ -8,10 +8,7 @@ import android.animation.ValueAnimator; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.animation.AccelerateDecelerateInterpolator; import com.mapbox.mapboxsdk.annotations.Icon; @@ -42,20 +39,13 @@ public class AnimatedMarkerActivity extends AppCompatActivity { private Marker passengerMarker = null; private MarkerView carMarker = null; + private Runnable animationRunnable; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_animated_marker); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -64,7 +54,8 @@ public class AnimatedMarkerActivity extends AppCompatActivity { public void onMapReady(@NonNull final MapboxMap mapboxMap) { AnimatedMarkerActivity.this.mapboxMap = mapboxMap; setupMap(); - mapView.post(new Runnable() { + + animationRunnable = new Runnable() { @Override public void run() { for (int i = 0; i < 10; i++) { @@ -73,7 +64,8 @@ public class AnimatedMarkerActivity extends AppCompatActivity { addPassenger(); addMainCar(); } - }); + }; + mapView.post(animationRunnable); } }); } @@ -192,17 +184,6 @@ public class AnimatedMarkerActivity extends AppCompatActivity { return new LatLng(randomLat, randomLon); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - @Override protected void onStart() { super.onStart(); @@ -225,6 +206,7 @@ public class AnimatedMarkerActivity extends AppCompatActivity { protected void onStop() { super.onStop(); mapView.onStop(); + mapView.removeCallbacks(animationRunnable); } @Override diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java index 0d97289e56..bd5d836ca9 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/BulkMarkerActivity.java @@ -10,12 +10,9 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; import android.support.v4.content.res.ResourcesCompat; -import android.support.v7.app.ActionBar; +import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - +import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; @@ -44,6 +41,8 @@ import java.util.ArrayList; import java.util.List; import java.util.Random; +import timber.log.Timber; + public class BulkMarkerActivity extends AppCompatActivity implements AdapterView.OnItemSelectedListener { private MapboxMap mapboxMap; @@ -56,31 +55,12 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView super.onCreate(savedInstanceState); setContentView(R.layout.activity_marker_bulk); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayShowTitleEnabled(false); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @Override public void onMapReady(@NonNull MapboxMap mapboxMap) { BulkMarkerActivity.this.mapboxMap = mapboxMap; - - if (actionBar != null) { - ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource( - actionBar.getThemedContext(), R.array.bulk_marker_list, android.R.layout.simple_spinner_item); - spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); - Spinner spinner = (Spinner) findViewById(R.id.spinner); - spinner.setAdapter(spinnerAdapter); - spinner.setOnItemSelectedListener(BulkMarkerActivity.this); - } } }); @@ -90,6 +70,19 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView } } + @Override + public boolean onCreateOptionsMenu(Menu menu) { + ArrayAdapter spinnerAdapter = ArrayAdapter.createFromResource( + this, R.array.bulk_marker_list, android.R.layout.simple_spinner_item); + spinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); + getMenuInflater().inflate(R.menu.menu_bulk_marker, menu); + MenuItem item = menu.findItem(R.id.spinner); + Spinner spinner = (Spinner) MenuItemCompat.getActionView(item); + spinner.setAdapter(spinnerAdapter); + spinner.setOnItemSelectedListener(BulkMarkerActivity.this); + return true; + } + @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { int amount = Integer.valueOf(getResources().getStringArray(R.array.bulk_marker_list)[position]); @@ -209,17 +202,6 @@ public class BulkMarkerActivity extends AppCompatActivity implements AdapterView mapView.onLowMemory(); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - private class FabClickListener implements View.OnClickListener { @Override public void onClick(final View view) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java index 8446329e43..a6820312d8 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/DynamicMarkerChangeActivity.java @@ -4,10 +4,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.annotations.IconFactory; @@ -34,15 +31,6 @@ public class DynamicMarkerChangeActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dynamic_marker); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - iconFactory = IconFactory.getInstance(this); mapView = (MapView) findViewById(R.id.mapView); @@ -129,15 +117,4 @@ public class DynamicMarkerChangeActivity extends AppCompatActivity { super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java index f1dc7f8c0d..7975c127f0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewActivity.java @@ -9,11 +9,8 @@ import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -71,15 +68,6 @@ public class MarkerViewActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_marker_view); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - final TextView viewCountView = (TextView) findViewById(R.id.countView); mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); @@ -458,17 +446,6 @@ public class MarkerViewActivity extends AppCompatActivity { mapView.onLowMemory(); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - private static class CarLocation { static LatLng[] CAR_0_LNGS = new LatLng[] { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewScaleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewScaleActivity.java deleted file mode 100644 index 53e352c2e6..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewScaleActivity.java +++ /dev/null @@ -1,179 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.activity.annotation; - -import android.os.Bundle; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; -import android.view.View; -import android.widget.SeekBar; -import android.widget.TextView; -import android.widget.Toast; - -import com.mapbox.mapboxsdk.annotations.Icon; -import com.mapbox.mapboxsdk.annotations.IconFactory; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewManager; -import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapView; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.testapp.R; - -import java.util.Locale; - -public class MarkerViewScaleActivity extends AppCompatActivity implements OnMapReadyCallback { - - private MapboxMap mapboxMap; - private MapView mapView; - - private MarkerView markerView; - private MarkerViewManager markerViewManager; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_marker_view_scale); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - mapView = (MapView) findViewById(R.id.mapView); - mapView.onCreate(savedInstanceState); - mapView.getMapAsync(this); - } - - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - markerViewManager = map.getMarkerViewManager(); - - final SeekBar xBar = (SeekBar) findViewById(R.id.seekbar_factor); - final TextView textView = (TextView) findViewById(R.id.textview_factor); - - // We need to listen to a render event to be sure - // the View of the Marker has been added to the map - mapView.addOnMapChangedListener(new MapView.OnMapChangedListener() { - @Override - public void onMapChanged(@MapView.MapChange int change) { - if (isMarkerRendered()) { - Toast.makeText(MarkerViewScaleActivity.this, "MarkerView is ready", Toast.LENGTH_SHORT).show(); - View view = markerViewManager.getView(markerView); - xBar.setOnSeekBarChangeListener(new FactorChangeListener(view, textView)); - xBar.setClickable(true); - mapView.removeOnMapChangedListener(this); - } - } - - private boolean isMarkerRendered() { - return markerView != null && markerViewManager.getView(markerView) != null; - } - }); - - Icon icon = IconFactory.getInstance(MarkerViewScaleActivity.this) - .fromResource(R.drawable.ic_circle); - - markerView = mapboxMap.addMarker(new MarkerViewOptions() - .position(new LatLng(38.907192, -77.036871)) - .icon(icon) - .flat(true)); - } - - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - @Override - public void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - public void onStart() { - super.onResume(); - mapView.onStart(); - } - - @Override - public void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - public void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - public void onLowMemory() { - super.onLowMemory(); - mapView.onLowMemory(); - } - - private static class FactorChangeListener implements SeekBar.OnSeekBarChangeListener { - - private TextView textView; - private View view; - - FactorChangeListener(View view, TextView textView) { - this.view = view; - this.textView = textView; - } - - @Override - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { - float newScale = getScale(progress); - textView.setText(String.format(Locale.US, "Scale: %.1f", newScale)); - if (view != null) { - view.setScaleX(newScale); - view.setScaleY(newScale); - } - } - - @Override - public void onStartTrackingTouch(SeekBar seekBar) { - // Not used - } - - @Override - public void onStopTrackingTouch(SeekBar seekBar) { - // Not used - } - - private float getScale(int progress) { - float scale = 1.0f * progress / 25; - return scale < 1.0 ? 1.0f : scale; - } - } - -} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewsInRectangleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewsInRectangleActivity.java index 99a0465092..9d00e82128 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewsInRectangleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/MarkerViewsInRectangleActivity.java @@ -2,10 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.graphics.RectF; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -33,7 +30,6 @@ public class MarkerViewsInRectangleActivity extends AppCompatActivity implements protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_marker_view_in_rect); - setupActionBar(); selectionBox = findViewById(R.id.selection_box); @@ -108,26 +104,4 @@ public class MarkerViewsInRectangleActivity extends AppCompatActivity implements super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java index 16efa9f190..c37d9bb92e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolygonActivity.java @@ -5,7 +5,6 @@ import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.Menu; import android.view.MenuItem; -import android.view.ViewGroup; import com.mapbox.mapboxsdk.annotations.Polygon; import com.mapbox.mapboxsdk.annotations.PolygonOptions; @@ -17,7 +16,6 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.MapboxMapOptions; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.mapboxsdk.testapp.utils.ToolbarComposer; import java.util.ArrayList; import java.util.List; @@ -50,8 +48,6 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.activity_polygon); - ToolbarComposer.initDefaultUpToolbar(this, R.id.toolbar); // configure inital map state MapboxMapOptions options = new MapboxMapOptions() @@ -72,11 +68,7 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); - // add to layout - ViewGroup container = (ViewGroup) findViewById(R.id.container); - if (container != null) { - container.addView(mapView); - } + setContentView(mapView); } @Override @@ -132,25 +124,18 @@ public class PolygonActivity extends AppCompatActivity implements OnMapReadyCall @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - case R.id.action_id_alpha: fullAlpha = !fullAlpha; polygon.setAlpha(fullAlpha ? FULL_ALPHA : PARTIAL_ALPHA); return true; - case R.id.action_id_visible: visible = !visible; polygon.setAlpha(visible ? (fullAlpha ? FULL_ALPHA : PARTIAL_ALPHA) : NO_ALPHA); return true; - case R.id.action_id_points: allPoints = !allPoints; polygon.setPoints(allPoints ? STAR_SHAPE_POINTS : BROKEN_SHAPE_POINTS); return true; - case R.id.action_id_color: color = !color; polygon.setFillColor(color ? BLUE_COLOR : RED_COLOR); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java index 44f11ca674..76e38018ca 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PolylineActivity.java @@ -3,12 +3,11 @@ package com.mapbox.mapboxsdk.testapp.activity.annotation; import android.graphics.Color; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import android.widget.Toast; import com.mapbox.mapboxsdk.annotations.Polyline; import com.mapbox.mapboxsdk.annotations.PolylineOptions; @@ -52,15 +51,6 @@ public class PolylineActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_polyline); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - if (savedInstanceState != null) { polylineOptions = savedInstanceState.getParcelableArrayList(STATE_POLYLINE_OPTIONS); } else { @@ -182,11 +172,16 @@ public class PolylineActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { + if (polylines.size() <= 0) { + Toast.makeText(PolylineActivity.this, "No polylines on map", Toast.LENGTH_LONG).show(); + return super.onOptionsItemSelected(item); + } switch (item.getItemId()) { case R.id.action_id_remove: // test to remove all annotations polylineOptions.clear(); mapboxMap.clear(); + polylines.clear(); return true; case R.id.action_id_alpha: @@ -216,11 +211,6 @@ public class PolylineActivity extends AppCompatActivity { p.setAlpha(visible ? (fullAlpha ? FULL_ALPHA : PARTIAL_ALPHA) : NO_ALPHA); } return true; - - case android.R.id.home: - onBackPressed(); - return true; - default: return super.onOptionsItemSelected(item); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java index 4b23060eec..f79e4c6704 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/annotation/PressForMarkerActivity.java @@ -4,9 +4,7 @@ import android.graphics.PointF; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; @@ -35,15 +33,6 @@ public class PressForMarkerActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_press_for_marker); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -139,9 +128,6 @@ public class PressForMarkerActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; case R.id.menuItemReset: resetMap(); return true; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java index 3d771613d4..74779c5515 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraAnimationTypeActivity.java @@ -1,10 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -32,15 +29,6 @@ public class CameraAnimationTypeActivity extends AppCompatActivity implements On super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_animation_types); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); if (mapView != null) { mapView.onCreate(savedInstanceState); @@ -199,15 +187,4 @@ public class CameraAnimationTypeActivity extends AppCompatActivity implements On super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java index 193b59a9db..4405c4c3c6 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/CameraPositionActivity.java @@ -7,15 +7,9 @@ import android.support.annotation.IdRes; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.widget.SeekBar; import android.widget.TextView; @@ -28,6 +22,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; +import timber.log.Timber; + public class CameraPositionActivity extends AppCompatActivity implements OnMapReadyCallback { private MapView mapView; @@ -38,15 +34,6 @@ public class CameraPositionActivity extends AppCompatActivity implements OnMapRe super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera_position); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -154,17 +141,6 @@ public class CameraPositionActivity extends AppCompatActivity implements OnMapRe mapView.onSaveInstanceState(outState); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - private View onInflateDialogContent(View view) { linkTextView(view, R.id.value_lat, R.id.seekbar_lat, new LatLngChangeListener(), 180 + 38); linkTextView(view, R.id.value_lon, R.id.seekbar_lon, new LatLngChangeListener(), 180 - 77); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java index 3dd6a6344d..d6db2aeeb0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/LatLngBoundsActivity.java @@ -1,13 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -23,6 +17,8 @@ import com.mapbox.mapboxsdk.testapp.R; import java.util.ArrayList; import java.util.List; +import timber.log.Timber; + public class LatLngBoundsActivity extends AppCompatActivity implements OnMapReadyCallback { private static final LatLng LOS_ANGELES = new LatLng(34.053940, -118.242622); @@ -36,15 +32,6 @@ public class LatLngBoundsActivity extends AppCompatActivity implements OnMapRead super.onCreate(savedInstanceState); setContentView(R.layout.activity_visible_bounds); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.setStyleUrl(Style.DARK); mapView.onCreate(savedInstanceState); @@ -130,15 +117,4 @@ public class LatLngBoundsActivity extends AppCompatActivity implements OnMapRead super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java index 4bc30157f8..696629d011 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/ManualZoomActivity.java @@ -3,9 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.graphics.Point; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -28,15 +26,6 @@ public class ManualZoomActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_manual_zoom); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.setStyleUrl(Style.SATELLITE); mapView.onCreate(savedInstanceState); @@ -61,10 +50,6 @@ public class ManualZoomActivity extends AppCompatActivity { public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - case R.id.action_zoom_in: mapboxMap.animateCamera(CameraUpdateFactory.zoomIn()); return true; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java index 71e8cc0a08..c2478fad66 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/camera/MaxMinZoomActivity.java @@ -1,10 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.camera; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; @@ -22,15 +19,6 @@ public class MaxMinZoomActivity extends AppCompatActivity implements OnMapReadyC super.onCreate(savedInstanceState); setContentView(R.layout.activity_maxmin_zoom); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -43,16 +31,6 @@ public class MaxMinZoomActivity extends AppCompatActivity implements OnMapReadyC mapboxMap.setMaxZoomPreference(5); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - } - return false; - } - @Override protected void onStart() { super.onStart(); @@ -94,5 +72,4 @@ public class MaxMinZoomActivity extends AppCompatActivity implements OnMapReadyC super.onLowMemory(); mapView.onLowMemory(); } - } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java index 8e4b58366f..3fbb25805b 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/customlayer/CustomLayerActivity.java @@ -3,12 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.customlayer; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - import android.view.Menu; import android.view.MenuItem; import android.view.View; @@ -23,6 +18,8 @@ import com.mapbox.mapboxsdk.style.layers.NoSuchLayerException; import com.mapbox.mapboxsdk.testapp.R; import com.mapbox.mapboxsdk.testapp.model.customlayer.ExampleCustomLayer; +import timber.log.Timber; + public class CustomLayerActivity extends AppCompatActivity { private MapboxMap mapboxMap; @@ -36,8 +33,6 @@ public class CustomLayerActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_custom_layer); - setupActionBar(); - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -138,9 +133,6 @@ public class CustomLayerActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; case R.id.action_update_layer: updateLayer(); return true; @@ -157,15 +149,4 @@ public class CustomLayerActivity extends AppCompatActivity { return super.onOptionsItemSelected(item); } } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/directions/DirectionsActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/directions/DirectionsActivity.java deleted file mode 100644 index 13e384a8b5..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/directions/DirectionsActivity.java +++ /dev/null @@ -1,213 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.activity.directions; - -import android.graphics.Color; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; - -import com.mapbox.mapboxsdk.annotations.MarkerOptions; -import com.mapbox.mapboxsdk.annotations.PolylineOptions; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.mapboxsdk.maps.MapView; -import com.mapbox.services.Constants; -import com.mapbox.services.api.ServicesException; -import com.mapbox.services.commons.geojson.LineString; -import com.mapbox.services.commons.models.Position; -import com.mapbox.services.api.directions.v5.DirectionsCriteria; -import com.mapbox.services.api.directions.v5.MapboxDirections; -import com.mapbox.services.api.directions.v5.models.DirectionsResponse; -import com.mapbox.services.api.directions.v5.models.DirectionsRoute; - -import java.util.ArrayList; -import java.util.List; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class DirectionsActivity extends AppCompatActivity { - - private MapView mapView; - private MapboxMap mapboxMap; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_directions); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - mapView = (MapView) findViewById(R.id.mapView); - mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - DirectionsActivity.this.mapboxMap = mapboxMap; - loadRoute(); - } - }); - } - - private void loadRoute() { - // Dupont Circle (Washington, DC) - Position origin = Position.fromCoordinates(-77.04341, 38.90962); - - // The White House (Washington, DC) - Position destination = Position.fromCoordinates(-77.0365, 38.8977); - - // Set map at centroid - LatLng centroid = new LatLng( - (origin.getLatitude() + destination.getLatitude()) / 2, - (origin.getLongitude() + destination.getLongitude()) / 2); - - mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder() - .target(centroid) - .zoom(14) - .build())); - - // Add origin and destination to the map - mapboxMap.addMarker(new MarkerOptions() - .position(new LatLng(origin.getLatitude(), origin.getLongitude())) - .title("Origin") - .snippet("Dupont Circle")); - mapboxMap.addMarker(new MarkerOptions() - .position(new LatLng(destination.getLatitude(), destination.getLongitude())) - .title("Destination") - .snippet("The White House")); - - // Get route from API - getRoute(origin, destination); - } - - private void getRoute(Position origin, Position destination) { - try { - MapboxDirections md = new MapboxDirections.Builder() - .setAccessToken(getString(R.string.mapbox_access_token)) - .setOrigin(origin) - .setOverview(DirectionsCriteria.OVERVIEW_FULL) - .setDestination(destination) - .setProfile(DirectionsCriteria.PROFILE_WALKING) - .build(); - - md.enqueueCall(new Callback() { - - @Override - public void onFailure(Call call, Throwable throwable) { - Timber.e("Error: " + throwable.getMessage()); - } - - @Override - public void onResponse(Call call, Response response) { - // You can get generic HTTP info about the response - Timber.d("Response code: " + response.code()); - - // Print some info about the route - DirectionsRoute currentRoute = response.body().getRoutes().get(0); - Timber.d("Distance: " + currentRoute.getDistance()); - - // Draw the route on the map - drawRoute(currentRoute); - } - - }); - } catch (ServicesException servicesException) { - Timber.e("Error displaying route: " + servicesException.toString()); - servicesException.printStackTrace(); - } - } - - private void drawRoute(DirectionsRoute route) { - - PolylineOptions builder = new PolylineOptions(); - builder.color(Color.parseColor("#3887be")); - builder.alpha(0.5f); - builder.width(5); - builder.width(5); - - LineString lineString = LineString.fromPolyline(route.getGeometry(), Constants.OSRM_PRECISION_V5); - List coordinates = lineString.getCoordinates(); - List points = new ArrayList<>(); - for (int i = 0; i < coordinates.size(); i++) { - points.add(new LatLng( - coordinates.get(i).getLatitude(), - coordinates.get(i).getLongitude())); - } - - builder.addAll(points); - - // Draw Points on MapView - mapboxMap.addPolyline(builder); - } - - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - public void onLowMemory() { - super.onLowMemory(); - mapView.onLowMemory(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - -} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java index 00cc8dfac7..5b66237d0f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxCountActivity.java @@ -2,10 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.feature; import android.graphics.RectF; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -33,7 +30,6 @@ public class QueryRenderedFeaturesBoxCountActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_query_features_box); - setupActionBar(); final View selectionBox = findViewById(R.id.selection_box); @@ -135,27 +131,4 @@ public class QueryRenderedFeaturesBoxCountActivity extends AppCompatActivity { super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java index 8c4a499f9b..9e7d5e0e03 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxHighlightActivity.java @@ -3,10 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.feature; import android.graphics.Color; import android.graphics.RectF; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -37,7 +34,6 @@ public class QueryRenderedFeaturesBoxHighlightActivity extends AppCompatActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_query_features_box); - setupActionBar(); final View selectionBox = findViewById(R.id.selection_box); @@ -84,7 +80,6 @@ public class QueryRenderedFeaturesBoxHighlightActivity extends AppCompatActivity }); } }); - } public MapboxMap getMapboxMap() { @@ -132,27 +127,4 @@ public class QueryRenderedFeaturesBoxHighlightActivity extends AppCompatActivity super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java index 4b7bbb9614..2b3655f01e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesBoxSymbolCountActivity.java @@ -4,10 +4,7 @@ import android.graphics.BitmapFactory; import android.graphics.RectF; import android.os.Bundle; import android.support.annotation.RawRes; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -46,7 +43,6 @@ public class QueryRenderedFeaturesBoxSymbolCountActivity extends AppCompatActivi protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_query_features_box); - setupActionBar(); final View selectionBox = findViewById(R.id.selection_box); @@ -160,27 +156,4 @@ public class QueryRenderedFeaturesBoxSymbolCountActivity extends AppCompatActivi super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java index 17dfbc18b4..24c30c76b5 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/feature/QueryRenderedFeaturesPropertiesActivity.java @@ -6,13 +6,7 @@ import android.os.Bundle; import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import android.view.View; import android.widget.LinearLayout; import android.widget.TextView; @@ -30,6 +24,8 @@ import com.mapbox.services.commons.geojson.Feature; import java.util.List; import java.util.Map; +import timber.log.Timber; + /** * Demo's query rendered features */ @@ -43,7 +39,6 @@ public class QueryRenderedFeaturesPropertiesActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_query_features_point); - setupActionBar(); final float density = getResources().getDisplayMetrics().density; @@ -186,28 +181,6 @@ public class QueryRenderedFeaturesPropertiesActivity extends AppCompatActivity { mapView.onLowMemory(); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - private static class CustomMarker extends Marker { private final List features; @@ -245,8 +218,8 @@ public class QueryRenderedFeaturesPropertiesActivity extends AppCompatActivity { return new CustomMarker(this, features); } - public static final Parcelable.Creator CREATOR - = new Parcelable.Creator() { + public static final Parcelable.Creator CREATOR = + new Parcelable.Creator() { public CustomMarkerOptions createFromParcel(Parcel in) { return new CustomMarkerOptions(in); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java index 1c259b1304..f57f56d96c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/MapFragmentActivity.java @@ -2,10 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.fragment; import android.app.FragmentTransaction; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -26,15 +23,6 @@ public class MapFragmentActivity extends AppCompatActivity implements OnMapReady super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_fragment); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - MapFragment mapFragment; if (savedInstanceState == null) { final FragmentTransaction transaction = getFragmentManager().beginTransaction(); @@ -75,15 +63,4 @@ public class MapFragmentActivity extends AppCompatActivity implements OnMapReady mapboxMap.animateCamera( CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().tilt(45.0).build()), 10000); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java index 7dcca89a04..b6db63d38c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/SupportMapFragmentActivity.java @@ -2,10 +2,7 @@ package com.mapbox.mapboxsdk.testapp.activity.fragment; import android.os.Bundle; import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -26,15 +23,6 @@ public class SupportMapFragmentActivity extends AppCompatActivity implements OnM super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_fragment); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - SupportMapFragment mapFragment; if (savedInstanceState == null) { final FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); @@ -73,15 +61,4 @@ public class SupportMapFragmentActivity extends AppCompatActivity implements OnM mapboxMap.animateCamera( CameraUpdateFactory.newCameraPosition(new CameraPosition.Builder().tilt(45.0).build()), 10000); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java index e6953bd3d2..7d2ebefea1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/fragment/ViewPagerActivity.java @@ -5,10 +5,7 @@ import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import com.mapbox.mapboxsdk.camera.CameraPosition; import com.mapbox.mapboxsdk.constants.Style; @@ -24,15 +21,6 @@ public class ViewPagerActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_viewpager); - final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); if (viewPager != null) { MapFragmentAdapter adapter = new MapFragmentAdapter(getSupportFragmentManager()); @@ -78,22 +66,10 @@ public class ViewPagerActivity extends AppCompatActivity { return fragment; } - @Override public CharSequence getPageTitle(int position) { return "Page " + position; } } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/geocoding/GeocoderActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/geocoding/GeocoderActivity.java deleted file mode 100644 index 39d52f7876..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/geocoding/GeocoderActivity.java +++ /dev/null @@ -1,205 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.activity.geocoding; - -import android.graphics.PointF; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.Gravity; -import android.view.MenuItem; -import android.view.ViewGroup; -import android.widget.FrameLayout; -import android.widget.ImageView; -import android.widget.TextView; - -import com.mapbox.mapboxsdk.annotations.MarkerOptions; -import com.mapbox.mapboxsdk.constants.Style; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapView; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.maps.Projection; -import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.services.api.ServicesException; -import com.mapbox.services.commons.models.Position; -import com.mapbox.services.api.geocoding.v5.GeocodingCriteria; -import com.mapbox.services.api.geocoding.v5.MapboxGeocoding; -import com.mapbox.services.api.geocoding.v5.models.CarmenFeature; -import com.mapbox.services.api.geocoding.v5.models.GeocodingResponse; - -import java.util.List; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -public class GeocoderActivity extends AppCompatActivity implements OnMapReadyCallback { - - private MapboxMap mapboxMap; - private MapView mapView; - private ImageView dropPinView; - private TextView textView; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_geocoder); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - textView = (TextView) findViewById(R.id.message); - setMessage(getString(R.string.geocoder_instructions)); - - mapView = (MapView) findViewById(R.id.mapView); - mapView.setStyleUrl(Style.MAPBOX_STREETS); - mapView.onCreate(savedInstanceState); - - dropPinView = new ImageView(this); - dropPinView.setImageResource(R.drawable.ic_droppin_24dp); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER); - dropPinView.setLayoutParams(params); - mapView.addView(dropPinView); - mapView.getMapAsync(this); - } - - @Override - public void onMapReady(MapboxMap map) { - mapboxMap = map; - final Projection projection = mapboxMap.getProjection(); - final int width = mapView.getMeasuredWidth(); - final int height = mapView.getMeasuredHeight(); - - // Click listener - mapboxMap.setOnMapClickListener(new MapboxMap.OnMapClickListener() { - @Override - public void onMapClick(@NonNull LatLng point) { - PointF centerPoint = new PointF(width / 2, (height + dropPinView.getHeight()) / 2); - LatLng centerLatLng = new LatLng(projection.fromScreenLocation(centerPoint)); - - setMessage("Geocoding..."); - - mapboxMap.removeAnnotations(); - mapboxMap.addMarker(new MarkerOptions().position(centerLatLng)); - - geocode(centerLatLng); - } - }); - } - - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - /* - * Forward geocoding - */ - - private void geocode(final LatLng point) { - - try { - MapboxGeocoding client = new MapboxGeocoding.Builder() - .setAccessToken(getString(R.string.mapbox_access_token)) - .setCoordinates(Position.fromCoordinates(point.getLongitude(), point.getLatitude())) - .setGeocodingType(GeocodingCriteria.TYPE_POI) - .build(); - - client.enqueueCall(new Callback() { - @Override - public void onResponse(Call call, Response response) { - - List results = response.body().getFeatures(); - if (results.size() > 0) { - String placeName = results.get(0).getPlaceName(); - setSuccess(placeName); - } else { - setMessage("No results."); - } - - } - - @Override - public void onFailure(Call call, Throwable throwable) { - setError(throwable.getMessage()); - } - }); - } catch (ServicesException servicesException) { - Timber.e("Error geocoding: " + servicesException.toString()); - servicesException.printStackTrace(); - setError(servicesException.getMessage()); - } - } - - /* - * Update text view - */ - - private void setMessage(String message) { - Timber.d("Message: " + message); - textView.setText(message); - } - - private void setSuccess(String placeName) { - Timber.d("Place name: " + placeName); - textView.setText(placeName); - } - - private void setError(String message) { - Timber.e("Error: " + message); - textView.setText("Error: " + message); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } -} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java index 7f3c16d7b8..0b24e23808 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/PrintActivity.java @@ -4,10 +4,7 @@ import android.graphics.Bitmap; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.print.PrintHelper; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.maps.MapView; @@ -25,15 +22,6 @@ public class PrintActivity extends AppCompatActivity implements MapboxMap.Snapsh super.onCreate(savedInstanceState); setContentView(R.layout.activity_print); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -104,16 +92,4 @@ public class PrintActivity extends AppCompatActivity implements MapboxMap.Snapsh super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java index 3912dfa918..c1fa768f83 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/imagegenerator/SnapshotActivity.java @@ -4,10 +4,7 @@ import android.graphics.Bitmap; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.ImageView; import android.widget.Toast; @@ -28,15 +25,6 @@ public class SnapshotActivity extends AppCompatActivity implements OnMapReadyCal super.onCreate(savedInstanceState); setContentView(R.layout.activity_snapshot); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -112,15 +100,4 @@ public class SnapshotActivity extends AppCompatActivity implements OnMapReadyCal super.onDestroy(); mapView.onDestroy(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java index c70e263be5..15749cbd19 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/DynamicInfoWindowAdapterActivity.java @@ -7,10 +7,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -41,8 +38,6 @@ public class DynamicInfoWindowAdapterActivity extends AppCompatActivity implemen super.onCreate(savedInstanceState); setContentView(R.layout.activity_infowindow_adapter); - setupActionBar(); - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -162,26 +157,4 @@ public class DynamicInfoWindowAdapterActivity extends AppCompatActivity implemen super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowActivity.java index 0c2af9b7e3..45ccfcec72 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowActivity.java @@ -2,20 +2,18 @@ package com.mapbox.mapboxsdk.testapp.activity.infowindow; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; -import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.annotations.Marker; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.maps.MapView; +import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.mapboxsdk.maps.MapView; import java.text.DecimalFormat; @@ -32,15 +30,6 @@ public class InfoWindowActivity extends AppCompatActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_infowindow); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -188,9 +177,6 @@ public class InfoWindowActivity extends AppCompatActivity toggleDeselectMarkersOnTap(!item.isChecked()); item.setChecked(!item.isChecked()); return true; - case android.R.id.home: - onBackPressed(); - return true; default: return super.onOptionsItemSelected(item); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java index 08f64abcba..f6a07c1310 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/infowindow/InfoWindowAdapterActivity.java @@ -6,10 +6,7 @@ import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.TextView; @@ -36,15 +33,6 @@ public class InfoWindowAdapterActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_infowindow_adapter); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - iconFactory = IconFactory.getInstance(this); iconDrawable = ContextCompat.getDrawable(this, R.drawable.ic_location_city_24dp); @@ -144,15 +132,4 @@ public class InfoWindowAdapterActivity extends AppCompatActivity { super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java index 5c9d927e9b..21147e80d9 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DebugModeActivity.java @@ -3,13 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.constants.Style; @@ -18,6 +12,8 @@ import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; import com.mapbox.mapboxsdk.testapp.R; +import timber.log.Timber; + public class DebugModeActivity extends AppCompatActivity { private MapView mapView; @@ -39,15 +35,6 @@ public class DebugModeActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_debug_mode); - final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.setTag(true); mapView.setStyleUrl(STYLES[currentStyleIndex]); @@ -127,16 +114,4 @@ public class DebugModeActivity extends AppCompatActivity { super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java index 6c43e28237..fef2ebaff7 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/DoubleMapActivity.java @@ -6,11 +6,8 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; @@ -38,15 +35,6 @@ public class DoubleMapActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_fragment); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - if (savedInstanceState == null) { FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); transaction.add(R.id.fragment_container, new DoubleMapFragment(), TAG_FRAGMENT); @@ -189,15 +177,4 @@ public class DoubleMapActivity extends AppCompatActivity { mapViewMini.onSaveInstanceState(outState); } } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java index ed3f315e06..d54a7fe509 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapInDialogActivity.java @@ -4,11 +4,8 @@ import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Button; @@ -23,15 +20,6 @@ public class MapInDialogActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_in_dialog); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - Button button = (Button) findViewById(R.id.button_open_dialog); button.setOnClickListener(new View.OnClickListener() { @Override @@ -43,17 +31,6 @@ public class MapInDialogActivity extends AppCompatActivity { }); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - public static class MapDialogFragment extends DialogFragment { private MapView mapView; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java index 90b91057ed..61d9a5c190 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/MapPaddingActivity.java @@ -2,17 +2,15 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import com.mapbox.mapboxsdk.annotations.MarkerOptions; import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.constants.MyLocationTracking; import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; @@ -29,15 +27,6 @@ public class MapPaddingActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_padding); - final Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.setTag(true); mapView.onCreate(savedInstanceState); @@ -50,7 +39,8 @@ public class MapPaddingActivity extends AppCompatActivity { int paddingLeft = (int) getResources().getDimension(R.dimen.map_padding_left); int paddingBottom = (int) getResources().getDimension(R.dimen.map_padding_bottom); int paddingRight = (int) getResources().getDimension(R.dimen.map_padding_right); - mapboxMap.setPadding(paddingLeft, toolbar.getHeight(), paddingRight, paddingBottom); + int paddingTop = (int) getResources().getDimension(R.dimen.map_padding_top); + mapboxMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom); moveToBangalore(); } @@ -138,10 +128,6 @@ public class MapPaddingActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - case R.id.action_user_tracking: if (mapboxMap != null) { toggleGps(true); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java index 7e04b95e20..1411cc176e 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/maplayout/SimpleMapActivity.java @@ -1,10 +1,7 @@ package com.mapbox.mapboxsdk.testapp.activity.maplayout; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.testapp.R; @@ -18,15 +15,6 @@ public class SimpleMapActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map_simple); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); } @@ -72,15 +60,4 @@ public class SimpleMapActivity extends AppCompatActivity { super.onSaveInstanceState(outState); mapView.onSaveInstanceState(outState); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/CarDrivingActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/CarDrivingActivity.java deleted file mode 100644 index 4bb6bc5f39..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/CarDrivingActivity.java +++ /dev/null @@ -1,201 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.activity.navigation; - -import android.Manifest; -import android.content.pm.PackageManager; -import android.graphics.Color; -import android.graphics.drawable.Drawable; -import android.location.Location; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.UiThread; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v4.content.res.ResourcesCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; - - -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; -import com.mapbox.mapboxsdk.constants.MyBearingTracking; -import com.mapbox.mapboxsdk.constants.MyLocationTracking; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.maps.MapView; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.maps.TrackingSettings; -import com.mapbox.mapboxsdk.maps.widgets.MyLocationViewSettings; -import com.mapbox.mapboxsdk.testapp.R; - -public class CarDrivingActivity extends AppCompatActivity implements MapboxMap.OnMyLocationChangeListener { - - private static final int PERMISSIONS_LOCATION = 0; - - private MapView mapView; - private MapboxMap mapboxMap; - private Location location; - - @Override - protected void onCreate(final Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_car_driving); - - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - - mapView = (MapView) findViewById(R.id.mapView); - mapView.onCreate(savedInstanceState); - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(@NonNull MapboxMap mapboxMap) { - CarDrivingActivity.this.mapboxMap = mapboxMap; - - // view settings - MyLocationViewSettings settings = mapboxMap.getMyLocationViewSettings(); - settings.setPadding(0, getWindow().getDecorView().getMeasuredHeight() / 3, 0, 0); - - // get car - Drawable car = ResourcesCompat.getDrawable(getResources(), R.drawable.ic_taxi_top_small, getTheme()); - settings.setForegroundTintColor(Color.TRANSPARENT); - settings.setForegroundDrawable(car, car); - - // remove accuracy circle - settings.setAccuracyAlpha(0); - - // disable dismissal when a gesture occurs - TrackingSettings trackingSettings = mapboxMap.getTrackingSettings(); - trackingSettings.setDismissLocationTrackingOnGesture(false); - trackingSettings.setDismissBearingTrackingOnGesture(false); - - mapboxMap.setOnMyLocationChangeListener(CarDrivingActivity.this); - - if (savedInstanceState == null) { - toggleGps(true); - } - } - }); - } - - @UiThread - public void toggleGps(boolean enableGps) { - if (enableGps) { - if ((ContextCompat.checkSelfPermission(this, - Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) - || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) - != PackageManager.PERMISSION_GRANTED)) { - ActivityCompat.requestPermissions(this, new String[] { - Manifest.permission.ACCESS_COARSE_LOCATION, - Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION); - } else { - enableLocation(true); - } - } else { - enableLocation(false); - } - } - - private void enableLocation(boolean enabled) { - if (enabled) { - mapboxMap.setMyLocationEnabled(true); - Location location = mapboxMap.getMyLocation(); - if (location != null) { - setInitialPosition(new LatLng(location)); - } - } else { - mapboxMap.setMyLocationEnabled(false); - } - } - - @Override - public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { - if (requestCode == PERMISSIONS_LOCATION) { - if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { - enableLocation(true); - } - } - } - - private void setInitialPosition(LatLng latLng) { - mapboxMap.moveCamera(CameraUpdateFactory.newCameraPosition( - new CameraPosition.Builder().target(latLng).zoom(15).tilt(20f).build())); - mapboxMap.setMyLocationEnabled(true); - - TrackingSettings trackingSettings = mapboxMap.getTrackingSettings(); - trackingSettings.setMyLocationTrackingMode(MyLocationTracking.TRACKING_FOLLOW); - trackingSettings.setMyBearingTrackingMode(MyBearingTracking.GPS); - } - - @Override - public void onMyLocationChange(@Nullable Location location) { - if (location != null) { - if (this.location == null) { - // initial location to reposition map - setInitialPosition(new LatLng(location)); - } - this.location = location; - } - } - - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - } - - @Override - protected void onResume() { - super.onResume(); - mapView.onResume(); - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - public void onLowMemory() { - super.onLowMemory(); - mapView.onLowMemory(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - -} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/LocationPickerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/LocationPickerActivity.java deleted file mode 100644 index 8fb53645a1..0000000000 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/navigation/LocationPickerActivity.java +++ /dev/null @@ -1,477 +0,0 @@ -package com.mapbox.mapboxsdk.testapp.activity.navigation; - -import android.Manifest; -import android.app.ProgressDialog; -import android.content.Context; -import android.content.pm.PackageManager; -import android.graphics.PointF; -import android.location.Location; -import android.os.Build; -import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.ActivityCompat; -import android.support.v7.app.ActionBar; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.Gravity; -import android.view.LayoutInflater; -import android.view.MenuItem; -import android.view.View; -import android.view.ViewGroup; -import android.view.animation.Animation; -import android.view.animation.AnimationUtils; -import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.ImageButton; -import android.widget.ImageView; -import android.widget.Toast; - -import com.mapbox.mapboxsdk.annotations.IconFactory; -import com.mapbox.mapboxsdk.annotations.Marker; -import com.mapbox.mapboxsdk.annotations.MarkerView; -import com.mapbox.mapboxsdk.annotations.MarkerViewOptions; -import com.mapbox.mapboxsdk.camera.CameraPosition; -import com.mapbox.mapboxsdk.geometry.LatLng; -import com.mapbox.mapboxsdk.location.LocationListener; -import com.mapbox.mapboxsdk.location.LocationServices; -import com.mapbox.mapboxsdk.maps.MapView; -import com.mapbox.mapboxsdk.maps.MapboxMap; -import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; -import com.mapbox.mapboxsdk.testapp.R; -import com.mapbox.mapboxsdk.testapp.model.annotations.PulseMarkerView; -import com.mapbox.mapboxsdk.testapp.model.annotations.PulseMarkerViewOptions; -import com.mapbox.services.api.ServicesException; -import com.mapbox.services.commons.models.Position; -import com.mapbox.services.api.geocoding.v5.GeocodingCriteria; -import com.mapbox.services.api.geocoding.v5.MapboxGeocoding; -import com.mapbox.services.api.geocoding.v5.models.CarmenFeature; -import com.mapbox.services.api.geocoding.v5.models.GeocodingResponse; - -import java.util.List; - -import retrofit2.Call; -import retrofit2.Callback; -import retrofit2.Response; - -/** - * Sample Activity to show a typical location picker use case - */ -public class LocationPickerActivity extends AppCompatActivity { - private static final int REQUEST_PERMISSIONS = 101; - - private MapView mapView; - private MapboxMap mapboxMap; - - private ImageView dropPinView; - private Marker addressPin; - private ImageButton clearDisplayViewButton; - private MarkerView userMarker; - - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_location_picker); - - setupActionBar(); - - //Initialize map as normal - mapView = (MapView) findViewById(R.id.mapView); - mapView.onCreate(savedInstanceState); - - //Create ui elements - createDropPin(); - createSelectLocationButton(); - createClearSelectionButton(); - - mapView.getMapAsync(new OnMapReadyCallback() { - @Override - public void onMapReady(MapboxMap map) { - //Store for later - mapboxMap = map; - - //Add user marker - mapboxMap.getMarkerViewManager().addMarkerViewAdapter( - new PulseMarkerViewAdapter(LocationPickerActivity.this)); - userMarker = createCustomUserMarker(new LatLng(0, 0)); - - //Fix the focal point to the center of the map - PointF focalPoint = new PointF( - (mapView.getX() + mapView.getWidth() / 2), (mapView.getY() + mapView.getHeight() / 2)); - mapboxMap.getUiSettings().setFocalPoint(focalPoint); - - //Track camera updates to animate the user location views - trackUserLocationView(userMarker); - } - }); - } - - private void zoomInOn(Location location) { - //Move the camera to the user - if (location != null) { - mapboxMap.setCameraPosition(new CameraPosition.Builder() - .target(new LatLng(location)) - .zoom(16) - .bearing(0) - .tilt(0) - .build()); - } - } - - - /** - * Tracks the camera to animate the marker when overlapping with the picker. - * Makes sure the marker actually points to the user's position by tracking it. - */ - private void trackUserLocationView(final MarkerView markerView) { - final float circleDiameterSize = getResources().getDimension(R.dimen.circle_size); - - //Track camera changes to check for overlap - mapboxMap.setOnCameraChangeListener(new MapboxMap.OnCameraChangeListener() { - - private Animation pulseAnimation; - - @Override - public void onCameraChange(CameraPosition position) { - if (markerView == null) { - return; - } - - //Make drop pin visible, if it wasn't already - showDropPin(); - - //Get the distance from the tip of the location picker to the MarkerView - double distance = getLocationPickerLocation().distanceTo(markerView.getPosition()); - - //If closeby, animate, otherwise, stop animation - View view = mapboxMap.getMarkerViewManager().getView(markerView); - if (view != null) { - View backgroundView = view.findViewById(R.id.background_imageview); - if (pulseAnimation == null && distance < 0.5f * circleDiameterSize) { - pulseAnimation = AnimationUtils.loadAnimation(LocationPickerActivity.this, R.anim.pulse); - pulseAnimation.setRepeatCount(Animation.INFINITE); - pulseAnimation.setRepeatMode(Animation.RESTART); - backgroundView.startAnimation(pulseAnimation); - } else if (pulseAnimation != null && distance >= 0.5f * circleDiameterSize) { - backgroundView.clearAnimation(); - pulseAnimation = null; - } - } - } - }); - - //Track location updates to move the user marker - LocationServices.getLocationServices(getApplicationContext()).addLocationListener(new LocationListener() { - @Override - public void onLocationChanged(Location location) { - if (location != null && markerView != null) { - markerView.setPosition(new LatLng(location)); - } - } - }); - } - - private MarkerView createCustomUserMarker(LatLng markerPosition) { - return mapboxMap.addMarker(new PulseMarkerViewOptions() - .icon(IconFactory.getInstance(getApplicationContext()).fromResource(R.drawable.ic_my_location_24dp)) - .position(markerPosition) - ); - } - - private void createClearSelectionButton() { - clearDisplayViewButton = (ImageButton) findViewById(R.id.clearDisplayViewButton); - clearDisplayViewButton.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View view) { - removeAddressPin(); - hide(clearDisplayViewButton); - showDropPin(); - } - }); - } - - private void createSelectLocationButton() { - Button selectLocationButton = (Button) findViewById(R.id.selectLocationButton); - //noinspection ConstantConditions - selectLocationButton.setOnClickListener( - new View.OnClickListener() { - @Override - public void onClick(View view) { - Timber.i("Location Selected!"); - if (mapboxMap != null) { - //Control button's state - clearDisplayViewButton.setVisibility(View.VISIBLE); - dropPinView.setVisibility(View.INVISIBLE); - - //Get position for the drop pin - LatLng position = getLocationPickerLocation(); - - //Show the address pin (result) - showAddressPin(position); - - //Get the address for that location and update the marker - geocode(position, new GeocodeCallbacks() { - @Override - public void onResult(String result) { - updateAddressPin(result); - } - - @Override - public void onFailure(Throwable failure) { - showFeedbackMessage("Could not retrieve address: " + failure.getMessage()); - } - }); - } - } - } - ); - } - - private void createDropPin() { - float density = getResources().getDisplayMetrics().density; - - dropPinView = new ImageView(this); - dropPinView.setImageResource(R.drawable.ic_droppin_24dp); - FrameLayout.LayoutParams params = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER); - params.bottomMargin = (int) (12 * density); - dropPinView.setLayoutParams(params); - - mapView.addView(dropPinView); - } - - private void showDropPin() { - if (dropPinView != null && dropPinView.getVisibility() != View.VISIBLE) { - dropPinView.setVisibility(View.VISIBLE); - } - } - - private void hide(View view) { - if (view != null) { - view.setVisibility(View.INVISIBLE); - } - } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - - /** - * Get address for the given location - */ - private void geocode(LatLng point, final GeocodeCallbacks callbacks) { - try { - //Create Geocoding client - MapboxGeocoding client = new MapboxGeocoding.Builder() - .setAccessToken(getString(R.string.mapbox_access_token)) - .setCoordinates(Position.fromCoordinates(point.getLongitude(), point.getLatitude())) - .setGeocodingType(GeocodingCriteria.TYPE_ADDRESS) - .build(); - - //Place the request - client.enqueueCall(new Callback() { - @Override - public void onResponse(Call call, Response response) { - - List results = response.body().getFeatures(); - String address = null; - if (results.size() > 0) { - CarmenFeature feature = results.get(0); - address = feature.getAddress() + " " + feature.getText(); - Timber.i("address " + address); - } else { - showFeedbackMessage("No results for search."); - } - - callbacks.onResult(address); - } - - @Override - public void onFailure(Call call, Throwable throwable) { - Timber.e("Geocoding Failure: " + throwable.getMessage()); - callbacks.onFailure(throwable); - } - }); - } catch (ServicesException servicesException) { - Timber.e("Error geocoding: " + servicesException.toString()); - callbacks.onFailure(servicesException); - } - } - - private LatLng getLocationPickerLocation() { - return mapboxMap.getProjection().fromScreenLocation( - new PointF(dropPinView.getLeft() + (dropPinView.getWidth() / 2), dropPinView.getBottom()) - ); - } - - private Marker showAddressPin(LatLng position) { - if (addressPin != null) { - //Remove previous pin - removeAddressPin(); - } - - //Create new one - addressPin = mapboxMap.addMarker(new MarkerViewOptions().title("Loading address...").position(position)); - mapboxMap.selectMarker(addressPin); - return addressPin; - } - - private void removeAddressPin() { - if (mapboxMap != null && addressPin != null) { - mapboxMap.removeMarker(addressPin); - } - } - - private void updateAddressPin(@Nullable String address) { - if (addressPin != null) { - addressPin.setTitle(address == null ? "No address found" : address); - } - } - - private void showFeedbackMessage(String message) { - Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show(); - } - - private boolean arePermissionsGranted() { - if (Build.VERSION.SDK_INT >= 23 - && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED - && checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { - Timber.i("Requesting permissions"); - ActivityCompat.requestPermissions(this, new String[] { - Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSIONS); - return false; - } - Timber.i("Permissions already granted"); - return true; - } - - @Override - protected void onStart() { - super.onStart(); - mapView.onStart(); - - //Check permissions - if (arePermissionsGranted()) { - mapView.getMapAsync(new OnMapReadyCallback() { - - @Override - public void onMapReady(final MapboxMap mapboxMap) { - //Get the user's location - final LocationServices locationServices = LocationServices.getLocationServices(getApplicationContext()); - - Location location = locationServices.getLastLocation(); - if (location != null) { - zoomInOn(location); - userMarker.setPosition(new LatLng(location)); - } else { - final ProgressDialog loadingDialog = ProgressDialog.show( - LocationPickerActivity.this, "Loading", "Getting user location", false); - locationServices.addLocationListener(new LocationListener() { - @Override - public void onLocationChanged(@Nullable Location location) { - //Move the camera to the user - if (location != null) { - zoomInOn(location); - userMarker.setPosition(new LatLng(location)); - locationServices.removeLocationListener(this); - loadingDialog.hide(); - } - } - }); - } - - locationServices.toggleGPS(true); - } - }); - } - } - - @Override - protected void onPause() { - super.onPause(); - mapView.onPause(); - } - - @Override - protected void onStop() { - super.onStop(); - mapView.onStop(); - } - - @Override - protected void onSaveInstanceState(Bundle outState) { - super.onSaveInstanceState(outState); - mapView.onSaveInstanceState(outState); - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mapView.onDestroy(); - } - - @Override - public void onLowMemory() { - super.onLowMemory(); - mapView.onLowMemory(); - } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - - /** - * Custom MarkerViewAdapter for the pulsing marker - */ - private static class PulseMarkerViewAdapter extends MapboxMap.MarkerViewAdapter { - - private LayoutInflater inflater; - - public PulseMarkerViewAdapter(@NonNull Context context) { - super(context); - this.inflater = LayoutInflater.from(context); - } - - @Nullable - @Override - public View getView(@NonNull PulseMarkerView marker, @Nullable View convertView, @NonNull ViewGroup parent) { - ViewHolder viewHolder; - if (convertView == null) { - viewHolder = new ViewHolder(); - convertView = inflater.inflate(R.layout.view_pulse_marker, parent, false); - viewHolder.foregroundImageView = (ImageView) convertView.findViewById(R.id.foreground_imageView); - viewHolder.backgroundImageView = (ImageView) convertView.findViewById(R.id.background_imageview); - convertView.setTag(viewHolder); - } - return convertView; - } - - private static class ViewHolder { - ImageView foregroundImageView; - ImageView backgroundImageView; - } - } - - private interface GeocodeCallbacks { - void onResult(String result); - - void onFailure(Throwable failure); - } -} diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java index e2eda0e6b1..65c84e516f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/OfflineActivity.java @@ -2,11 +2,8 @@ package com.mapbox.mapboxsdk.testapp.activity.offline; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.text.TextUtils; -import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; @@ -68,15 +65,6 @@ public class OfflineActivity extends AppCompatActivity super.onCreate(savedInstanceState); setContentView(R.layout.activity_offline); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - // You can use Mapbox.setConnected(Boolean) to manually set the connectivity // state of your app. This will override any checks performed via the ConnectivityManager. //Mapbox.getInstance().setConnected(false); @@ -171,17 +159,6 @@ public class OfflineActivity extends AppCompatActivity mapView.onLowMemory(); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - /* * Buttons logic */ diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java index a83cabba12..285e896766 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/offline/UpdateMetadataActivity.java @@ -3,13 +3,10 @@ package com.mapbox.mapboxsdk.testapp.activity.offline; import android.content.Context; import android.content.DialogInterface; import android.os.Bundle; -import android.support.v7.app.ActionBar; import android.support.v7.app.AlertDialog; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.text.InputType; import android.view.LayoutInflater; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -40,15 +37,6 @@ public class UpdateMetadataActivity extends AppCompatActivity implements Adapter super.onCreate(savedInstanceState); setContentView(R.layout.activity_metadata_update); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - ListView listView = (ListView) findViewById(R.id.listView); listView.setAdapter(adapter = new OfflineRegionMetadataAdapter(this)); listView.setEmptyView(findViewById(android.R.id.empty)); @@ -125,17 +113,6 @@ public class UpdateMetadataActivity extends AppCompatActivity implements Adapter }); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - private static class OfflineRegionMetadataAdapter extends BaseAdapter { private Context context; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java index 0b102057b7..3b3b6a06ce 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CircleLayerActivity.java @@ -5,13 +5,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.camera.CameraPosition; @@ -28,6 +22,8 @@ import com.mapbox.mapboxsdk.testapp.R; import java.net.MalformedURLException; import java.net.URL; +import timber.log.Timber; + import static com.mapbox.mapboxsdk.style.layers.Filter.in; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleColor; import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.circleRadius; @@ -50,15 +46,6 @@ public class CircleLayerActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_circle_layer); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -156,15 +143,4 @@ public class CircleLayerActivity extends AppCompatActivity { super.onDestroy(); mapView.onDestroy(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } -} +} \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java index d68872a5ba..1e9afe4cf0 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/CustomSpriteActivity.java @@ -5,13 +5,7 @@ import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -28,6 +22,8 @@ import com.mapbox.services.commons.geojson.FeatureCollection; import com.mapbox.services.commons.geojson.Point; import com.mapbox.services.commons.models.Position; +import timber.log.Timber; + import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconImage; /** @@ -47,15 +43,6 @@ public class CustomSpriteActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_add_sprite); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -152,15 +139,4 @@ public class CustomSpriteActivity extends AppCompatActivity { super.onDestroy(); mapView.onDestroy(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java index 33fc7f60a6..6cc7a69d3f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/GeoJsonClusteringActivity.java @@ -3,12 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.graphics.Color; import android.os.Bundle; import android.support.v4.content.res.ResourcesCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - import android.view.MenuItem; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -25,6 +20,8 @@ import com.mapbox.mapboxsdk.testapp.R; import java.net.MalformedURLException; import java.net.URL; +import timber.log.Timber; + import static com.mapbox.mapboxsdk.style.layers.Filter.all; import static com.mapbox.mapboxsdk.style.layers.Filter.gte; import static com.mapbox.mapboxsdk.style.layers.Filter.lt; @@ -48,8 +45,6 @@ public class GeoJsonClusteringActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_geojson_clustering); - setupActionBar(); - //Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); //noinspection ConstantConditions @@ -138,9 +133,9 @@ public class GeoJsonClusteringActivity extends AppCompatActivity { //Add unclustered layer int[][] layers = new int[][] { - new int[] {150, ResourcesCompat.getColor(getResources(), R.color.red_accent, getTheme())}, - new int[] {20, ResourcesCompat.getColor(getResources(), R.color.green_accent, getTheme())}, - new int[] {0, ResourcesCompat.getColor(getResources(), R.color.blue_accent, getTheme())} + new int[] {150, ResourcesCompat.getColor(getResources(), R.color.redAccent, getTheme())}, + new int[] {20, ResourcesCompat.getColor(getResources(), R.color.greenAccent, getTheme())}, + new int[] {0, ResourcesCompat.getColor(getResources(), R.color.blueAccent, getTheme())} }; SymbolLayer unclustered = new SymbolLayer("unclustered-points", "earthquakes"); @@ -175,15 +170,4 @@ public class GeoJsonClusteringActivity extends AppCompatActivity { //Zoom out to start mapboxMap.animateCamera(CameraUpdateFactory.zoomTo(1)); } - - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RealTimeGeoJsonActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RealTimeGeoJsonActivity.java index fad4f9714d..aea5f7c25d 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RealTimeGeoJsonActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RealTimeGeoJsonActivity.java @@ -3,13 +3,7 @@ package com.mapbox.mapboxsdk.testapp.activity.style; import android.os.Bundle; import android.os.Handler; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; - -import timber.log.Timber; - -import android.view.MenuItem; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; @@ -21,6 +15,8 @@ import com.mapbox.mapboxsdk.testapp.R; import java.net.MalformedURLException; import java.net.URL; +import timber.log.Timber; + import static com.mapbox.mapboxsdk.style.layers.PropertyFactory.iconImage; /** @@ -46,15 +42,6 @@ public class RealTimeGeoJsonActivity extends AppCompatActivity implements OnMapR super.onCreate(savedInstanceState); setContentView(R.layout.activity_default); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(this); @@ -119,17 +106,6 @@ public class RealTimeGeoJsonActivity extends AppCompatActivity implements OnMapR mapView.onSaveInstanceState(outState); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - private static class RefreshGeoJsonRunnable implements Runnable { private MapboxMap mapboxMap; diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java index 983f82c53a..b84c78a578 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/RuntimeStyleActivity.java @@ -4,9 +4,7 @@ import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.support.annotation.RawRes; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.widget.Toast; @@ -83,8 +81,6 @@ public class RuntimeStyleActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_runtime_style); - setupActionBar(); - //Initialize map as normal mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); @@ -153,9 +149,6 @@ public class RuntimeStyleActivity extends AppCompatActivity { @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; case R.id.action_water_color: setWaterColor(); return true; @@ -459,17 +452,6 @@ public class RuntimeStyleActivity extends AppCompatActivity { return writer.toString(); } - private void setupActionBar() { - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - } - private void addCustomTileSource() { //Add a source Source source = new VectorSource("custom-tile-source", new TileSet("2.1.0", "https://vector.mapzen.com/osm/all/{z}/{x}/{y}.mvt?api_key=vector-tiles-LM25tq4")); diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java index 73e6bc985a..da9fe87f32 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/StyleFileActivity.java @@ -6,10 +6,7 @@ import android.support.annotation.NonNull; import android.support.annotation.RawRes; import android.support.design.widget.FloatingActionButton; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.widget.Toast; @@ -44,15 +41,6 @@ public class StyleFileActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_style_file); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -168,15 +156,4 @@ public class StyleFileActivity extends AppCompatActivity { super.onDestroy(); mapView.onDestroy(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java index be71e58eba..33758d3f15 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/style/SymbolLayerActivity.java @@ -5,9 +5,7 @@ import android.graphics.Color; import android.graphics.PointF; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; @@ -51,15 +49,6 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. super.onCreate(savedInstanceState); setContentView(R.layout.activity_symbollayer); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -195,9 +184,6 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; case R.id.action_toggle_text_size: toggleTextSize(); return true; @@ -211,5 +197,4 @@ public class SymbolLayerActivity extends AppCompatActivity implements MapboxMap. return super.onOptionsItemSelected(item); } } - } \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java index e20455b1ce..3984e765e1 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationDrawableActivity.java @@ -9,10 +9,7 @@ import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; @@ -38,14 +35,6 @@ public class MyLocationDrawableActivity extends AppCompatActivity implements Loc protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_location_customization); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } findViewById(R.id.progress).setVisibility(View.GONE); @@ -167,16 +156,4 @@ public class MyLocationDrawableActivity extends AppCompatActivity implements Loc super.onLowMemory(); mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java index 2da3bedcbf..f5dfc90247 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationTintActivity.java @@ -12,10 +12,7 @@ import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.support.v4.app.ActivityCompat; import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; @@ -43,15 +40,6 @@ public class MyLocationTintActivity extends AppCompatActivity implements Locatio super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_location_dot_color); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } - mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); mapView.getMapAsync(new OnMapReadyCallback() { @@ -94,9 +82,9 @@ public class MyLocationTintActivity extends AppCompatActivity implements Locatio @Override public void onClick(View view) { myLocationViewSettings.setAccuracyTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapbox_green)); + ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); myLocationViewSettings.setForegroundTintColor( - ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapbox_green)); + ContextCompat.getColor(MyLocationTintActivity.this, R.color.mapboxGreen)); myLocationViewSettings.setBackgroundTintColor(Color.WHITE); } }); @@ -184,17 +172,6 @@ public class MyLocationTintActivity extends AppCompatActivity implements Locatio mapView.onSaveInstanceState(outState); } - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return super.onOptionsItemSelected(item); - } - } - @UiThread public void toggleGps(boolean enableGps) { if (enableGps) { diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java index e522840038..e6991c201f 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/java/com/mapbox/mapboxsdk/testapp/activity/userlocation/MyLocationToggleActivity.java @@ -5,19 +5,16 @@ import android.content.pm.PackageManager; import android.location.Location; import android.os.Bundle; import android.support.annotation.NonNull; -import android.support.annotation.Nullable; import android.support.annotation.UiThread; import android.support.design.widget.FloatingActionButton; import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.Toolbar; -import android.view.MenuItem; import android.view.View; -import com.mapbox.mapboxsdk.camera.CameraPosition; +import com.mapbox.mapboxsdk.camera.CameraUpdateFactory; import com.mapbox.mapboxsdk.geometry.LatLng; +import com.mapbox.mapboxsdk.location.LocationListener; +import com.mapbox.mapboxsdk.location.LocationServices; import com.mapbox.mapboxsdk.maps.MapView; import com.mapbox.mapboxsdk.maps.MapboxMap; import com.mapbox.mapboxsdk.maps.OnMapReadyCallback; @@ -29,6 +26,9 @@ public class MyLocationToggleActivity extends AppCompatActivity { private MapboxMap mapboxMap; private FloatingActionButton locationToggleFab; + private LocationServices locationServices; + private LocationListener locationListener; + private static final int PERMISSIONS_LOCATION = 0; @Override @@ -36,15 +36,7 @@ public class MyLocationToggleActivity extends AppCompatActivity { super.onCreate(savedInstanceState); setContentView(R.layout.activity_my_location_toggle); - Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); - setSupportActionBar(toolbar); - - final ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.setDisplayShowTitleEnabled(true); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowHomeEnabled(true); - } + locationServices = LocationServices.getLocationServices(MyLocationToggleActivity.this); mapView = (MapView) findViewById(R.id.mapView); mapView.onCreate(savedInstanceState); @@ -100,6 +92,11 @@ public class MyLocationToggleActivity extends AppCompatActivity { protected void onDestroy() { super.onDestroy(); mapView.onDestroy(); + // Ensure no memory leak occurs if we register the location listener but the call hasn't + // been made yet. + if (locationListener != null) { + locationServices.removeLocationListener(locationListener); + } } @Override @@ -108,27 +105,11 @@ public class MyLocationToggleActivity extends AppCompatActivity { mapView.onLowMemory(); } - - @Override - public boolean onOptionsItemSelected(MenuItem item) { - switch (item.getItemId()) { - case android.R.id.home: - onBackPressed(); - return true; - default: - return false; - } - } - @UiThread public void toggleGps(boolean enableGps) { if (enableGps) { - if ((ContextCompat.checkSelfPermission(this, - Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) - || (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) - != PackageManager.PERMISSION_GRANTED)) { - ActivityCompat.requestPermissions(this, new String[] { - Manifest.permission.ACCESS_COARSE_LOCATION, + if (!LocationServices.getLocationServices(MyLocationToggleActivity.this).areLocationPermissionsGranted()) { + ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSIONS_LOCATION); } else { enableLocation(true); @@ -140,25 +121,32 @@ public class MyLocationToggleActivity extends AppCompatActivity { private void enableLocation(boolean enabled) { if (enabled) { - mapboxMap.setOnMyLocationChangeListener(new MapboxMap.OnMyLocationChangeListener() { - @Override - public void onMyLocationChange(@Nullable Location location) { - if (location != null) { - mapboxMap.setCameraPosition(new CameraPosition.Builder() - .target(new LatLng(location)) - .zoom(16) - .bearing(0) - .tilt(0) - .build()); - mapboxMap.setOnMyLocationChangeListener(null); - } + // To move the camera instantly, we attempt to get the last known location and either + // ease or animate the camera to that position depending on the zoom level. + Location lastLocation = LocationServices.getLocationServices(this).getLastLocation(); + + if (lastLocation != null) { + if (mapboxMap.getCameraPosition().zoom > 15.99) { + mapboxMap.easeCamera(CameraUpdateFactory.newLatLng(new LatLng(lastLocation)), 1000); + } else { + mapboxMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lastLocation), 16), 1000); } - }); + } else { + locationListener = new LocationListener() { + @Override + public void onLocationChanged(Location location) { + if (location != null) { + mapboxMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(location), 16)); + locationServices.removeLocationListener(this); + } + } + }; + locationServices.addLocationListener(locationListener); + } locationToggleFab.setImageResource(R.drawable.ic_location_disabled_24dp); } else { locationToggleFab.setImageResource(R.drawable.ic_my_location_24dp); } - mapboxMap.setMyLocationEnabled(enabled); } diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/line_divider.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/line_divider.xml index 2dc6b4a008..28258bdddc 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/line_divider.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/drawable/line_divider.xml @@ -1,11 +1,12 @@ - + android:height="1dp"/> - + \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_remove_marker.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_remove_marker.xml index 596f52aab1..c52512195c 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_remove_marker.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_remove_marker.xml @@ -1,19 +1,13 @@ - - - + android:layout_height="match_parent"/> \ No newline at end of file diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_sprite.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_sprite.xml index e0e2cbfdab..380c1ab8de 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_sprite.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_add_sprite.xml @@ -1,26 +1,19 @@ - - - + app:mapbox_styleUrl="@string/mapbox_style_mapbox_streets"/> + app:backgroundTint="@android:color/white"/> diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_animated_marker.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_animated_marker.xml index 6534c23c72..0566757d58 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_animated_marker.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_animated_marker.xml @@ -1,25 +1,18 @@ - - - + app:mapbox_cameraZoom="6" + app:mapbox_styleUrl="@string/mapbox_style_light"/> - + diff --git a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_camera_animation_types.xml b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_camera_animation_types.xml index 8a139083f8..b70bb6d7b2 100644 --- a/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_camera_animation_types.xml +++ b/platform/android/MapboxGLAndroidSDKTestApp/src/main/res/layout/activity_camera_animation_types.xml @@ -1,25 +1,18 @@ - - - + app:mapbox_cameraZoom="15"/> + android:text="@string/button_camera_move"/>