I'm using Google maps in my app with custom tiles (weather images - radar) above the maps.
Now I want to do some animation with that tiles. So the user can change the time and it will show tiles for that time. With changing time (on SeekBar) it will change the tiles and you can see the movement of the clouds/storm... (like in other weather apps).
But I have a problem with flickering the images during changing the Tiles. (I tested some other weather apps with Google maps and it should somehow work).
I tried several things:
TileOverlayOptions.setFadeIn(false)
TileOverlay.clearTileCache()
Storing Tiles in memory in HashMap
And some other options but nothing works correctly
I also find this How to update TileOverlay without a flicker? but there is not any solution. Maybe try to use more TileOverlays but I'm not sure if this will work.
Do you have some suggestions or tips on how to solve this?
Thanks for any advice.
Related
In my app I added the map of Google Maps and you can navigate within a given area (which can not be done through maps as it is not drawn). Now I would like to customize the map and add image overlays to the buildings so as to better target people. Let me explain with an example:
In the picture is the image of the building that I customized.
Now I want place the image over the google map. I saw that there GroundOverlay but I can not place it properly.
Does anyone have any tips?
I would recommend using Polygon Shapes instead of Images. Working with Images like you intend to do, would probably be very hard later on.
You might want to look at:
https://developers.google.com/maps/documentation/android-api/shapes
I am currently working on a school project and I am trying to learn the techniques on downloading OSM map tiles into the phone's local memory/cache, so that users are able to view the maps when offline.
This is to be done by giving a specific location, and the map tiles that are within specific radius/distance from the location will be downloaded into the phone memory (when there is online connection) for offline display.
However, I am having some slight trouble in understanding OSMDroid's APIs. From my understanding, it seems that the classes involved are:
MapTileBase
MapDownloader
IFilesystemCache
Please do correct me if I'm mistaken.
Also, in MapTileBase (which I believe is the provider), the getMapTile returns android.graphics.drawable.Drawable.
Is this Drawable class even related to the concept of offline map display?
Hope someone can enlighten me on where exactly maps are being called to be downloaded into the phone's memory, and how we can edit the maps to display interface items such as routes, pins, etc.
I don't have an exactly answer as you're looking for a method to cache offline outside of an area the MapView hasn't already navigated to. The built in caching support is there, but not exactly how you want to do it.
You're going to need online download capabilities if you plan to cache and not just supply your own offline map tiles. I would take a look at the MapTileDownloader and maybe try to implement your own version of it. The MapTileDownloader.TileLoader.loadTile() method takes a MapTileRequestState which I believe the MapTileProviderArray calls when a map tile is needed.
If you can replicate the existing MapTileDownloader's TileLoader functionality, you can probably inject your own relative MapTileRequestState or straight up MapTile's to the one requested. e.g. Take the TileLoader called MapTileRequestState, inspect it, figure out how to construct new MapTileRequestState/MapTile representing tiles outside the current view. It won't be easy though as you'll have to deal with the different zoom levels, and depending on the zoom level, the radius should be smaller, etc... A lower zoom level of 18 would have a larger tile radius than a higher 10.
Personally I was recently working on trying to work 100% offline so I don't have any example code to help. Good luck even though its been a couple of months.
First, go right the source
https://github.com/osmdroid/osmdroid
There's a few wiki articles that will help, especially the offline map tiles article. In short, use MOBAC or the tool osmdroid provides. OSMBonuspack also has a tool to perform the same task on device.
Map tiles are actually downloaded using this class
https://github.com/osmdroid/osmdroid/blob/master/osmdroid-android/src/main/java/org/osmdroid/tileprovider/modules/MapTileDownloader.java
I built my application using Google Maps and it is using:
-BalloonItemizedOverlay
-BalloonOverlayView
-ItemizedOverlay
and what it does:
-Displays multiple points on map, each one clickable and balloon appears with relative text + description.
-Displays and updates the marker/point of user's position.
The only reason I want to switch to Open Street Map is because I would like to use the feature "caching map tiles" (presaving maps) which as far as I have looked it up is not allowed with Google Maps.
Can someone help me convert my application thoroughly to use OSMdroid instead of GoogleMaps? Providing me with some guides (very few support for OSMdroid at the moment...)
I have already looked up a lot of codes but they mostly differ in comparison with Google Maps and I can't seem to get it all right. I have managed to display user's location on the map but adding BalloonItemizedOverlays and so on is a hassle.
Anyway just help me out in any way you can - proposals on how to do it, sites with guides, anything :)
Thanks
http://code.google.com/p/osmbonuspack/wiki/Tutorial_1
http://code.google.com/p/osmbonuspack/wiki/Tutorial_2
I think these two tutorials should get you started with Balloons and Customized Balloons
Itemized overlay with osmdroid is quite easy to use, you should give it a try and you will get the feel of it once you try it our.
Is there any way to implement falling pins/markers animation for google maps in android like that in iPhone ???
Android has overlay markers (see ItemizedOverlay) that make it easy to add images to maps, BUT note that, in my experience at least, animated images do not work when added to overlays.
I found it necessary to add a View on top of the MapView, and add imagery to that, and I've successfully added animated drawable images to the map using that approach. For more details see here:
Can I use AnimationDrawable in an overlay on a MapView?
But to be honest, you should remember that it's Android, and copying every little feature from iOS is unnecessary. Google Maps on Android doesn't use a pin marker, it uses a static blue spot - I'd say it's best to replicate that and remember your users are Android users, not iOS users - they want consistency across Android apps.
You could have a look in this docmentation: https://developers.google.com/maps/documentation/javascript/overlays
Here is an example map.
Just add this in your code:
marker.setAnimation(google.maps.Animation.DROP);
I'm looking at displaying a map within my Android app that presents maritime charts, and also needs to work offline as there will be no network connectivity of any type available. I suspect that I will get my maritime charts supplied as a series of bitmap files with LAT/LON references of the area clipped.
My question is this - how do I go about implementing this ? I guess I have to add them as a layer somehow, can someone show me how to do this ?
Also, as the device will be offline, will there be a problem trying to use Google maps even if all the content is held locally, will the API just "not work" until it has connectivity ?
Thanks in advance.
As this just earned Tumbleweed, I thought I should update it.
I tried really hard to use the Maps API offline, with my bitmap as a layer - it didn't work out. The API is too reliant on the interweb and just seems to timeout when trying just about anything.
Simple solution, I have just extended the ImageView class to display my bitmap chart & overlays.