From d5e5292568e632044015837e3fc75945116c8153 Mon Sep 17 00:00:00 2001 From: kevin Date: Mon, 13 Jan 2020 11:20:59 +0800 Subject: [PATCH 1/3] Fix scale bar incorrect scale. --- app/build.gradle | 1 + .../activity/scalebar/ScalebarActivity.kt | 24 +++++++++++++++++++ app/src/main/res/layout/activity_scalebar.xml | 2 +- gradle/dependencies.gradle | 4 +++- .../mapbox/pluginscalebar/ScaleBarPlugin.java | 3 ++- 5 files changed, 31 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index f8ad23759..f6ac85b48 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -65,6 +65,7 @@ dependencies { exclude group: 'com.google.android.gms' }) implementation dependenciesList.mapboxGeocoding + implementation dependenciesList.mapboxTurf // Architecture implementation dependenciesList.lifecycleExtensions diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt index aca13eff5..47e2f1c7e 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt @@ -3,12 +3,24 @@ package com.mapbox.mapboxsdk.plugins.testapp.activity.scalebar import android.os.Bundle import android.support.v7.app.AppCompatActivity import com.mapbox.mapboxsdk.maps.MapboxMap +import com.mapbox.turf.TurfMeasurement import com.mapbox.mapboxsdk.maps.Style import com.mapbox.mapboxsdk.plugins.testapp.R import com.mapbox.pluginscalebar.ScaleBarOptions import com.mapbox.pluginscalebar.ScaleBarPlugin import kotlinx.android.synthetic.main.activity_scalebar.* +import com.mapbox.geojson.LineString +import com.mapbox.geojson.Point + +import com.mapbox.mapboxsdk.style.layers.LineLayer + +import com.mapbox.mapboxsdk.style.sources.GeoJsonSource +import com.mapbox.turf.TurfConstants + +import java.util.* + + /** * Activity showing a scalebar used on a MapView. */ @@ -20,6 +32,7 @@ class ScalebarActivity : AppCompatActivity() { mapView.getMapAsync { mapboxMap -> mapboxMap.setStyle(Style.MAPBOX_STREETS) { addScalebar(mapboxMap) + setupTestLine(it) } } } @@ -43,6 +56,17 @@ class ScalebarActivity : AppCompatActivity() { } } + private fun setupTestLine(style: Style) { + val source = GeoJsonSource("source-id") + val lineLayer = LineLayer("layer-id", source.id) + val startPoint: Point = Point.fromLngLat(-122.447244,37.769145) + val endPoint: Point = TurfMeasurement.destination(startPoint, 200.0, 90.0, TurfConstants.UNIT_METERS) + val pointList: List = listOf(startPoint, endPoint) + source.setGeoJson(LineString.fromLngLats(pointList)) + style.addSource(source) + style.addLayer(lineLayer) + } + override fun onStart() { super.onStart() mapView.onStart() diff --git a/app/src/main/res/layout/activity_scalebar.xml b/app/src/main/res/layout/activity_scalebar.xml index 00ab4be91..199ce4fc6 100644 --- a/app/src/main/res/layout/activity_scalebar.xml +++ b/app/src/main/res/layout/activity_scalebar.xml @@ -12,7 +12,7 @@ android:layout_height="match_parent" app:mapbox_cameraTargetLat="37.769145" app:mapbox_cameraTargetLng="-122.447244" - app:mapbox_cameraZoom="9" /> + app:mapbox_cameraZoom="15.5" /> Date: Mon, 13 Jan 2020 11:26:47 +0800 Subject: [PATCH 2/3] Fix check style. --- .../plugins/testapp/activity/scalebar/ScalebarActivity.kt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt index 47e2f1c7e..e4c147334 100644 --- a/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt +++ b/app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt @@ -20,7 +20,6 @@ import com.mapbox.turf.TurfConstants import java.util.* - /** * Activity showing a scalebar used on a MapView. */ @@ -59,7 +58,7 @@ class ScalebarActivity : AppCompatActivity() { private fun setupTestLine(style: Style) { val source = GeoJsonSource("source-id") val lineLayer = LineLayer("layer-id", source.id) - val startPoint: Point = Point.fromLngLat(-122.447244,37.769145) + val startPoint: Point = Point.fromLngLat(-122.447244, 37.769145) val endPoint: Point = TurfMeasurement.destination(startPoint, 200.0, 90.0, TurfConstants.UNIT_METERS) val pointList: List = listOf(startPoint, endPoint) source.setGeoJson(LineString.fromLngLats(pointList)) From 9f33e4cc591563dd4d198861dcff444e3c7299f0 Mon Sep 17 00:00:00 2001 From: kevin Date: Tue, 14 Jan 2020 10:35:07 +0800 Subject: [PATCH 3/3] Fix test case error. --- .../pluginscalebar/ScaleBarPluginTest.kt | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/plugin-scalebar/src/test/java/com/mapbox/pluginscalebar/ScaleBarPluginTest.kt b/plugin-scalebar/src/test/java/com/mapbox/pluginscalebar/ScaleBarPluginTest.kt index 596fbf66f..e0e61d981 100644 --- a/plugin-scalebar/src/test/java/com/mapbox/pluginscalebar/ScaleBarPluginTest.kt +++ b/plugin-scalebar/src/test/java/com/mapbox/pluginscalebar/ScaleBarPluginTest.kt @@ -1,5 +1,8 @@ package com.mapbox.pluginscalebar +import android.content.Context +import android.content.res.Resources +import android.util.DisplayMetrics import android.view.View import com.mapbox.mapboxsdk.camera.CameraPosition import com.mapbox.mapboxsdk.maps.MapView @@ -8,6 +11,7 @@ import com.mapbox.mapboxsdk.maps.Projection import io.mockk.MockKAnnotations import io.mockk.every import io.mockk.impl.annotations.MockK +import io.mockk.spyk import io.mockk.verify import org.junit.Assert.* import org.junit.Before @@ -29,14 +33,25 @@ class ScaleBarPluginTest { @MockK lateinit var scaleBarWidget: ScaleBarWidget + @MockK + lateinit var context: Context + + @MockK + lateinit var resources: Resources + @MockK + lateinit var displayMetrics: DisplayMetrics @Before fun setUp() { MockKAnnotations.init(this, relaxUnitFun = true) + displayMetrics.density = 2f every { mapView.width } returns 1000 every { projection.getMetersPerPixelAtLatitude(CameraPosition.DEFAULT.target.latitude) } returns 100_000.0 every { mapboxMap.projection } returns projection every { mapboxMap.cameraPosition } returns CameraPosition.DEFAULT every { scaleBarOptions.build() } returns scaleBarWidget + every { mapView.context} returns context + every { context.resources} returns resources + every { resources.displayMetrics} returns displayMetrics } @Test @@ -113,11 +128,11 @@ class ScaleBarPluginTest { val scaleBarPlugin = ScaleBarPlugin(mapView, mapboxMap) scaleBarPlugin.create(scaleBarOptions) verify(exactly = 1) { mapboxMap.cameraPosition } - verify(exactly = 1) { scaleBarWidget.setDistancePerPixel(100_000.0) } + verify(exactly = 1) { scaleBarWidget.setDistancePerPixel(50_000.0) } scaleBarPlugin.isEnabled = false scaleBarPlugin.isEnabled = true verify(exactly = 2) { mapboxMap.cameraPosition } - verify(exactly = 2) { scaleBarWidget.setDistancePerPixel(100_000.0) } + verify(exactly = 2) { scaleBarWidget.setDistancePerPixel(50_000.0) } } } \ No newline at end of file