So far it seems like the API is limited to just being able to change the icon, but it would be nice if you could define a layout file or add a label above the icon that shows the title for instance, instead of requiring a tap interaction to show the info window. It's possible with Google Maps to define a layout and use that to create a cluster item to achieve this, but is it possible with MapBox since it is based on Mapbox GL?
Is this what you are trying to accomplish using Mapbox, bubble icons? They take in a string (in the image it is a price) and creates a bitmap icon for you to use as a marker icon.
I'll edit my answer with code if this is what you want.
Related
How can i achieve a marker like the one in the picture below,that i can customize for every item at runtime,based on the item's attributes,in this example,price.
I have some knowledge about markers and customization,so im not a complete newbie,for example i was able to achieve this:
But in this case nothing is dynamic,the marker is the same for every item so it's not like what i want to achieve.
Have you looked at the utility library? It supports an IconGenerator class which you can use to display text on a marker. This seems to accomplish your use case.
See: https://github.com/googlemaps/android-maps-utils
I'm trying to figure out how to make a dynamically generated list of markers display a dynamic text label on the map (not in the infoWindow). I know it's possible because I've used this feature in Mapbox Studio - I just can't figure out how to do it on Android! I considered creating a static Bitmap icon with the text incorporated, but that doesn't seem very flexible compared to the Mapbox Studio version, so I'd like to avoid it if I can! Any suggestions?
You're trying to do what's called data-driven styling
You should use a SymbolLayer to show text on a map. If the text you want to show is based on GeoJSON Features in your data set, then use the get expression in the textField property of a SymbolLayer.
FeatureCollection featureCollection = FeatureCollection.fromFeatures();
GeoJsonSource geoJsonSource = new GeoJsonSource("source-id", featureCollection);
mapboxMap.addSource(geoJsonSource);
SymbolLayer symbolLayer = new SymbolLayer("layer-id", "source-id")
.withProperties(PropertyFactory.textField(Expression.get("FEATURE-PROPERTY-KEY")));
mapboxMap.addLayer(symbolLayer);
The Annotation Plugin simplifies some of this. Also for reference to see how SymbolLayers are used, there is the Mapbox Android demo app.
Just like for marker where we can put drawable for its icon, such as with Marker's .SetIcon(), how to do the same with Mapbox's polyline?
I've searched Google but, CMIIW, seems like there isn't a way to do that yet? Some links I think are related:
Github - Dotted Polyline on Android
Runtime Styling API
Any suggestion?
Unfortunately, Polyline doesn't support custom patterns. What I'd suggest is using LineLayer with PropertyFactory.linePattern() where you pass ID of an image previously added to the map via MapboxMap#addImage().
Here is an example activity that uses LineLayer.
Is there a way, to change the standard grey background color of google maps, if the map type is selected as Map_Type_None.
Thanks for help
Two ways to do this.
Add a custom overlay to the map.
Change the hierarchy of your layout(View Group), so that google map will be below other views!
Is there a way to add shadow conveniently as in V3? Otherwise my solution is to add another marker to the same location with its icon the shadow of the original marker's icon.. and with click listener disabled.. That seems bad though. Any idea? Thanks in advance!:)
Create a Bitmap that contains both marker and its shadow and assign it using BitmapDescriptorFactory.fromBitmap or simply create a png file that contains all you need and use BitmapDecriptorFactory.fromResource.