-
Notifications
You must be signed in to change notification settings - Fork 119
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Scale bar plugin #955
Add Scale bar plugin #955
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great @Chaoba! did a quick initial review. Will try finding some time to run this against the profiler. Would be great if you could add some tests in the meantime.
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/androidTest/java/com/mapbox/pluginscalebar/ExampleInstrumentedTest.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBar.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBar.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/test/java/com/mapbox/pluginscalebar/ExampleUnitTest.java
Outdated
Show resolved
Hide resolved
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBar.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
…y/scalebar/ScalebarActivity.kt Co-Authored-By: Langston Smith <langston.smith@mapbox.com>
…ar.java Co-Authored-By: Langston Smith <langston.smith@mapbox.com>
…arWidget.java Co-Authored-By: Langston Smith <langston.smith@mapbox.com>
@tobrun When using double click to zoom in, |
@Chaoba instead of using |
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBar.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple of comments below. Generally looks great!
When it comes to exposing the setters, the more the better, but I've marked only the ones that I feel are necessary to match basic use-cases. An Options
class (basically a builder approach) would fit nicely. You could provide those options to the widget through the plugin's constructor, or even in the runtime.
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarWidget.java
Outdated
Show resolved
Hide resolved
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBar.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I've done a little bit more tests with the current setup on the Pixel 2 XL - rapidly zooming in and out:
Refresh interval | ScaleBarWidget#onDraw processor time % |
---|---|
5ms | 0.65% |
10ms | 0.54% |
16ms | 0.46% |
25ms | 0.20% |
100ms | 0.18% |
From the above, I think it's safe to decrease the default minimum refresh interval to 15ms. It increases the UX on performant devices by allowing us to render the widget in around 60 FPS and doesn't lose pace to the map renderer visually. The interval can be adjusted to lower end devices by developers.
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarManager.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarManager.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarManager.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
app/src/main/java/com/mapbox/mapboxsdk/plugins/testapp/activity/scalebar/ScalebarActivity.kt
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOption.java
Outdated
Show resolved
Hide resolved
…arOption.java Co-Authored-By: Langston Smith <langston.smith@mapbox.com>
…y/scalebar/ScalebarActivity.kt Co-Authored-By: Langston Smith <langston.smith@mapbox.com>
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarPlugin.java
Outdated
Show resolved
Hide resolved
app/src/androidTest/java/com/mapbox/mapboxsdk/plugins/scalebar/ScaleBarTest.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarOptions.java
Outdated
Show resolved
Hide resolved
plugin-scalebar/src/main/java/com/mapbox/pluginscalebar/ScaleBarPlugin.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM!
Please rebase and clean up the git history before merging, or use the squash merge.
@LukasPaczos Thanks for your help. 🚀 |
Tried it works and looks great. It would be nicer though if you could define a fixed horizontal size for the Scale Bar so that it doesn't constantly resize itself. Thanks |
Hey @virtuoso80, thanks for the feedback! Could you cut a separate ticket for your request? Thank you! |
Resolves #11
![ezgif com-resize (2)](https://user-images.githubusercontent.com/8577318/57837052-89416280-77f4-11e9-9d97-f164737acd46.gif)