Use traffic data for navigation?
I added Google's traffic data as a map overlay, which is kind of nice, but it would be great if navigation made use of that data for more accurate routing and ETAs. Is there any way to accomplish this currently?
I added Google's traffic data as a map overlay, which is kind of nice, but it would be great if navigation made use of that data for more accurate routing and ETAs. Is there any way to accomplish this currently?
r/OsmAnd • u/ERR_code404 • 1d ago
Hi, I'm trying to route to Kew Gardens and other destinations in the Brentford area, however OsmAnd seems to hate routing through Kew Bridge Road at the end of the North Circular Road, does anyone know why this is happening so we can fix it via OSM?
I've tried using an address on the road and it still avoids it like the plague.
r/OsmAnd • u/elMacumbero • 2d ago
Let's say I downloaded a big area of Satellite imagery on my iPad and it took a long time, now I want to have the same thing on my iPhone, is there a way to transfer that? Or do I need to download it again on my phone?
r/OsmAnd • u/Joao_Matta • 3d ago
Olá. Sou um usuário iniciante do Osmand. Estou com dificuldade quando pesquiso o destino. No Waze eu busco o endereço com a rua e o número da casa por exemplo e ele me leva até lá. No Osmand incluo o nome da rua com o número da casa, mas só aparece no mapa o rua correta, mas sem o número. Tenho que configurar algo ? Obrigado.
I needed the ZIP code for my pharmacy earlier today. I was able to find it fine in OsmAnd, but unlike e.g. Google Maps, it doesn't provide an address that I can see. Am I just missing something?
r/OsmAnd • u/SavvyPython • 4d ago
Routes, heightlibes, the map itself are not visible. I can't find the setting to change this, does it exist?
r/OsmAnd • u/ElStellino • 6d ago
Who thought it was a good idea to set it enabled by default?
And hiding so well the toggle switch as well? Master joker, surely! 🤣
Where is it please? (the toggle switch)
Never mind, I 've just found it
r/OsmAnd • u/DiverAllen • 6d ago
On my iPhone, following a GPX track in Car profile gives 73 h 29 min for 179 miles. That's about 2.4 mph, basically walking speed. Screenshot attached.
A Pixel using the same GPX file shows 2 h 43 min, so the file itself seems fine and the problem looks specific to my app's settings. That said, the Pixel's 66 mph average also seems optimistic for a back-roads loop. So I'm curious what actually drives the estimate when following a track.
Questions:
r/OsmAnd • u/WissahickonKid • 6d ago
I was a little late on the download, but here I am. Can’t trust apps that randomly change names of international bodies of water based on the demented & delusional whims of a wanna-be tyrant.
So anyways, how do I get this app to display full screen in landscape? It does full screen if I turn the iPad vertical like a phone, but I prefer the full-screen landscape view when I’m using the iPad. Is this a feature that is only available in the paid mode? (Not doing that. If I pay money for maps, I’ll buy a hard copy.)
r/OsmAnd • u/DiverAllen • 8d ago
I was having trouble getting OsmAnd's Map mode to stay set to Day or Night on my Android Auto car screen, and figured out what was going on. Posting in case it saves someone else the head-scratching.
The problem: While driving, I'd open OsmAnd's Map mode menu on the car screen and change it from Automatic to Day or Night. The only way out of the menu was the back arrow in the upper left. When I backed out, it reverted to Automatic every time.
What was actually happening: When I tried the same menu with the car parked, there was an Apply button in the upper right that I'd never seen before. Tapping Apply saved the setting and it stuck. My best guess is that Android Auto hides some controls while the car is moving, so the Apply button wasn't there while driving, and backing out with the arrow cancelled the change.
Two ways to set it:
Hope this helps someone.
r/OsmAnd • u/Individual-Rent-4793 • 8d ago
Pessoal eu queria que um aviso sonoro de minha escolha fosse reproduzido ao atingir o limite de velocidade da via, queria poder escolher um arquivo do meu celular pra isso, isso é possível, estou perdendo alguma coisa?
r/OsmAnd • u/Sad-Shop927 • 9d ago
Hey everyone !
I'm using OsmAnd for at least a year now and there are two things that are missing or I can't find how to do and would be mandatory in my opinion :
1/ Is there a way to show different ways to go from a position to another ? Sometimes the suggested route isn’t the one I’d like to take, and I can’t change it easily to an alternate path.
2/ During navigation, can I mark a road as closed, at least locally, for myself ? There are a lot of roadworks blocking the entire road and it is really is complicated to find an alternative path not using the closed road.
Thank you !
r/OsmAnd • u/DevCatOTA • 10d ago
I use OSMAND on a motorcycle, a Honda NT1100 DCT, and love it. I especially enjoy being able to create routes on my laptop and then sync them to my phone. The Android Auto support is excellent.
I only have one issue. I ride a lot of twisties, and when running a prepared route, coming up to a turn, I get "turn left in 200 feet" followed by "turn right in 150 feet," and so on. There are no turnouts or opposing traffic on these mountain roads.
How do I turn down the granularity of the voice prompts?
Long time the lack of understanding how stuffs work in app led to blind spot on my side regarding matter described below.
You ask why can't I use those? This OP got created to present reason hotly.
*) over-/underlays use online resources. However my device with OsmAnd installed and in use undergoes following usage pattern. While outdoors the connection with internet (cellular data) gets enabled only due to discrete needs, e.g. email check, some web-browsing session, online-banking, public transportation, using shared vehicles.
WiFi rather/never in use/enabled while outdoors.
*) when over- or -underlay is enabled the app tries to fetch appropriate online resource. App's log captured demonstrate that due to missing connection with public address space the app retries it practically infinitely - hundreds thousands of such lines in the log. At certain point of time also following sort of log entry gets encountered
OsmAnd Maps[81406:4901369] OAAppDelegate applicationDidReceiveMemoryWarning
This log line also happens be present a number of times in one log file. So far so good, problem begins because since a long time ago I experience frequent crashes of app, for long time I had no clue what is going on. A rough counter-test with over-/underlay disabled leads to feeling on my side that all that above altogether may be the reason of frequent app crashes. I need to have under-/overlay disabled in order to not experiences app crashes. So far I did not find a hot use-case for myself of over-/underlay use while myself stays outwards.
crash got reproduced recent 60 minutes, the time I am back to home with theoretically WiFi available but intentionally disabled for test (cellular data never enabled while at home).
ChatGPT deepwiki's Devin trained on OsmAnd iOS app code base found that iOS may teardown running app when above pattern gets identified. Eventually some memory buffer runs full or gets overwritten.
Eventually it is feasible to make resource used by over-/underlay be stored locally in app data. However this hypocritical path still wasn't evaluated by myself so far.
By the way I never use plugins wikipedia, weather. Some period of time I used mapilllary but only during WiFi connection available. It happens that I investigate map frames presented by app or let app to find routes while at home but wifi disabled. In this case crashes happen to occur as well.
Search results in their current implementation form serve me badly due to high noise level.
OsmAnd for iOS, app latest available version in use
Here a proposal regarding list of search results being presented.
*) Sorting results by sort of/category of POI;
ideally filtering results by POI category
*) Sorting results by the location of POI;
ideally filtering by POI location
*) If "search nearby" got used to search let's limit list of presented results to true nearby POIs - currently list starts with 3 POIs distant from selection on map by 300 km, or so - that is in no case a nearby-location.
*) Sort search results alphabetically
Concern as title line summarizes. I have been updating offline maps successfully for ages. Today however when I want enable the astronomy plugin the app [iOS version, latest app update conducted minutes ago successfully] the app reacts like Maps+ subscription was missing. According to presentations by OsmAnd sales channels the astronomy plugin is comprised in Maps+. I can however find no path for successful completion of that plugin enablement. All what I get is only the mentioning which subscriptions are needed to enable astronomy plugin.
iOS-level in-app purchases are enabled. Also purchase restore has been redone few minutes ago. Nothing helps.
I can furthermore enable among others Contour Lines and Terrain visualization.
EDIT
Plugins External Sensors and Wikipedia are affected same way. It is however possible to enable plugins Vehicle metrics. List of feature does not match iOS app submenu Plugins versus presentation on http://osmand.net/pricining - both list have entries not present on the another list.
as the coverage of PL may historically have its validity on another side however as of time being it is ages no more valid.
r/OsmAnd • u/tatoorel • 14d ago
If you use Pro, which feature would you miss most? If you’re considering it, what would you like to know before upgrading?
We’re also running a sale through October 4: 50% off annual OsmAnd Pro and Maps+ plans.
r/OsmAnd • u/seagull-joy • 15d ago
I recently installed osmand+ because I like the features it comes with compared to what I used before (CoMaps).
I noticed that when I'm in navigation, the accuracy of where I'm facing or where my phone is rotating to when taking a corner or turning around is super duper low.
in Comaps its also offline, but the accuracy is very high in the same location and same circumstances.
do they use different sensors and methods to determine where I'm facing?
if there is any way to make OsmAnd+ more accurate, please let me know because that is a big dealbreaker for me.
not being able to see where I'm facing in a navigation app.
otherwise, fantastic app
I can add a description tag when creating or modifying a POI, but how do I get osmand to show me that description in the POI details?
The only way I found to do this is by going in to edit the POI and going to 'advanced', which is a whole bunch of clicks just to see the description. Surely there's an easier way?
r/OsmAnd • u/pictuga • 18d ago
Hello,
As a follow up on my previous post, slightly amending the code can make it more versatile.
With the below, any Tasker task can be used to build a custom OsmAnd widget. Such task would be called upon clicking on the widget and if the widget returns text, that text will be displayed inside the widget.
The task is also called when the widget is being installed (for dynamic labels). Setup calls vs widget click calls can be differentiated by checking the task's %par1 (either setup or click).
To add the widget, the below "OsmAnd Bridge" task must be (created and) called, passing the target task's name as a parameter (par1).
To interact with OsmAnd from your task (add favourites, etc.), you can use intents from your task. The osmandapp/osmand-api-demo GitHub repo documents available intents.
It's a bit hackish so not guaranteed to work with your setup!
``` Task: OsmAnd Bridge
A1: Perform Task [
Name: %par1
Priority: %priority
Parameter 1 (%par1): click
Parameter 2 (%par2): %par2
Return Value Variable: %om_bridge_result
Structure Output (JSON, etc): On ]
If [ %caller1 eq launch ]
A2: Perform Task [
Name: %par1
Priority: %priority
Parameter 1 (%par1): setup
Parameter 2 (%par2): %par2
Return Value Variable: %om_bridge_result
Structure Output (JSON, etc): On ]
If [ %caller1 neq launch ]
A3: Java Code [
Code: /** below code goes here **/
Structure Output (JSON, etc): On
Continue Task After Error:On ]
```
Sample task for widget:
``` Task: OAW Play Pause
A1: Media Control [
Cmd: Toggle Pause
Simulate Media Button: On
Use Notification If Available: On ]
If [ %par1 eq click ]
A2: Return [
Value: ⏯️
Stop: On ]
If [ %par1 eq setup ]
```
Then profiles have to be set to setup the widgets whenever the OsmAnd app is opened.
``` Profile: OsmAnd Custom Application: OsmAnd
Enter Task: Anon
A1: Perform Task [
Name: OsmAnd Bridge
Priority: %priority
Parameter 1 (%par1): OAW Play Pause
Structure Output (JSON, etc): On ]
```
Java code
``` package_name = "net.osmand.plus";
/* Read task and result from Tasker */ targetTask = tasker.getVariable("par1"); display_text = tasker.getVariable("om_bridge_result"); caller = tasker.getVariable("caller1");
if (targetTask == null || targetTask.length() == 0) { tasker.showToast("No target task specified"); return; }
if (display_text == null && caller.equals("launch")) { /tasker.showToast("Empty update, do nothing");/ return; }
if (display_text == null || display_text.length() == 0) display_text = targetTask;
/* Helper widget function */ widget(action, id, title, display_text, order) { clickIntent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
clickIntent.setData(
new android.net.Uri.Builder()
.scheme("tasker")
.authority("assistantactions")
.appendQueryParameter("task", "OsmAnd Bridge")
.appendQueryParameter("par1", targetTask)
.build()
);
widget = constructor.newInstance(
id,
"ais_map",
title,
"ais_map",
"ais_map",
display_text,
"",
order,
clickIntent
);
widget.setRightPanelByDefault(true);
if (action.equals("update")) {
params = updateParamsConstructor.newInstance(widget);
return api.updateMapWidget(params);
}
params = paramsConstructor.newInstance(widget);
return api.addMapWidget(params);
}
/* Load OsmAnd API */ try { osmandContext = context.createPackageContext(package_name, android.content.Context.CONTEXT_INCLUDE_CODE | android.content.Context.CONTEXT_IGNORE_SECURITY); } catch (Exception e) { tasker.showToast(package_name + " is not installed"); return; }
loader = osmandContext.getClassLoader();
AMapWidgetClass = java.lang.Class.forName("net.osmand.aidlapi.mapwidget.AMapWidget", true, loader); ParamsClass = java.lang.Class.forName("net.osmand.aidlapi.mapwidget.AddMapWidgetParams", true, loader); UpdateParamsClass = java.lang.Class.forName("net.osmand.aidlapi.mapwidget.UpdateMapWidgetParams", true, loader);
constructor = AMapWidgetClass.getConstructor( java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.TYPE, android.content.Intent.class );
paramsConstructor = ParamsClass.getConstructor(AMapWidgetClass); updateParamsConstructor = UpdateParamsClass.getConstructor(AMapWidgetClass);
/* Connect to OsmAnd */ binderHolder = new java.util.HashMap();
connection = new android.content.ServiceConnection() { invoke(method, args) { if (method.equals("onServiceConnected")) { binderHolder.put("binder", args[1]); return; }
if (method.equals("onServiceDisconnected")) {
binderHolder.remove("binder");
return;
}
}
};
serviceIntent = new android.content.Intent(); serviceIntent.setClassName(package_name, "net.osmand.aidl.OsmandAidlServiceV2"); context.bindService(serviceIntent, connection, android.content.Context.BIND_AUTO_CREATE);
startWait = java.lang.System.currentTimeMillis();
while (binderHolder.get("binder") == null && java.lang.System.currentTimeMillis() - startWait < 5000) { java.lang.Thread.sleep(100); }
binder = binderHolder.get("binder");
if (binder == null) { tasker.showToast("Could not connect to OsmAnd"); return; }
/* Create AIDL interface from Binder */ StubClass = java.lang.Class.forName("net.osmand.aidlapi.IOsmAndAidlInterface$Stub", true, loader);
asInterfaceMethod = StubClass.getMethod("asInterface", android.os.IBinder.class);
api = asInterfaceMethod.invoke(null, binder);
if (api == null) { context.unbindService(connection); tasker.showToast("Connected to OsmAnd but API access failed"); return; }
/* Update existing widget when called from a widget click */ if (caller.equals("launch")) { widgetResult = widget( "update", targetTask, targetTask, display_text, 0 );
context.unbindService(connection);
if (!widgetResult) {
tasker.showToast("Connected to OsmAnd but widget not updated. Activate plugin and retry");
return;
}
/*tasker.showToast("OsmAnd Bridge widget updated");*/
return;
}
/* Add widget during setup */ widgetResult = widget( "add", targetTask, targetTask, display_text, 0 );
context.unbindService(connection);
if (!widgetResult) { tasker.showToast("Connected to OsmAnd but widget not installed. Activate plugin and retry"); return; }
/tasker.showToast("OsmAnd Bridge widget installed");/ ```
r/OsmAnd • u/pictuga • 19d ago
Hello,
Until issue #24161 gets resolved, GenAI and I have made a quick Tasker (Java Code based) task that adds 3 widgets to OsmAnd: play/pause, next track, previous track.
See screenshots.
Limitations: it doesn't display currently playing track name or artist (it would involve listeners, increasing complexity), in "Configure screen" widgets are not grouped into a proper "folder" and and I couldn't be bothered to find a proper icon for the widget but it doesn't really matter (the buttons' text is ⏯️⏭️⏮️ anyway).
Manual:
Tested with FDroid build, version 5.4.4.
Changes: * Make it easier to use another package name. Checks that package is installed. Asks user to activate plugin and restart before adding widgets. * Removed unnecessary code (checks package install via try/catch, app doesn't need to be running).
``` package_name = "net.osmand.plus";
addWidget(id, title, display_text, order, command) { clickIntent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
clickIntent.setData(
new android.net.Uri.Builder()
.scheme("tasker")
.authority("assistantactions")
.appendQueryParameter("task", "OsmAnd Media Control")
.appendQueryParameter("par1", command)
.build()
);
widget = constructor.newInstance(
id,
"ais_map",
title,
"ais_map",
"ais_map",
display_text,
"",
order,
clickIntent
);
widget.setRightPanelByDefault(true);
params = paramsConstructor.newInstance(widget);
result = api.addMapWidget(params);
return result;
}
/* Read command from Tasker */ command = tasker.getVariable("par1");
if (command != null && command.length() > 0) { keyCode = 0;
if (command.equals("PLAYPAUSE")) keyCode = 85;
if (command.equals("NEXT")) keyCode = 87;
if (command.equals("PREVIOUS")) keyCode = 88;
if (keyCode == 0) {
tasker.showToast("Invalid command" + command);
return;
}
now = java.lang.System.currentTimeMillis();
down = new android.view.KeyEvent(now, now, android.view.KeyEvent.ACTION_DOWN, keyCode, 0);
up = new android.view.KeyEvent(now, now, android.view.KeyEvent.ACTION_UP, keyCode, 0);
audio = context.getSystemService(android.content.Context.AUDIO_SERVICE);
audio.dispatchMediaKeyEvent(down);
audio.dispatchMediaKeyEvent(up);
return;
}
/* Load OsmAnd API */ try { osmandContext = context.createPackageContext(package_name, android.content.Context.CONTEXT_INCLUDE_CODE | android.content.Context.CONTEXT_IGNORE_SECURITY); } catch (Exception e) { tasker.showToast(package_name + " is not installed"); return; }
loader = osmandContext.getClassLoader();
AMapWidgetClass = java.lang.Class.forName("net.osmand.aidlapi.mapwidget.AMapWidget", true, loader); ParamsClass = java.lang.Class.forName("net.osmand.aidlapi.mapwidget.AddMapWidgetParams", true, loader);
constructor = AMapWidgetClass.getConstructor( java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.String.class, java.lang.Integer.TYPE, android.content.Intent.class );
paramsConstructor = ParamsClass.getConstructor(AMapWidgetClass);
/* Connect to OsmAnd */ binderHolder = new java.util.HashMap();
connection = new android.content.ServiceConnection() { invoke(method, args) { if (method.equals("onServiceConnected")) { binderHolder.put("binder", args[1]); return; }
if (method.equals("onServiceDisconnected")) {
binderHolder.remove("binder");
return;
}
}
};
serviceIntent = new android.content.Intent(); serviceIntent.setClassName(package_name, "net.osmand.aidl.OsmandAidlServiceV2");
context.bindService(serviceIntent, connection, android.content.Context.BIND_AUTO_CREATE);
startWait = java.lang.System.currentTimeMillis();
while (binderHolder.get("binder") == null && java.lang.System.currentTimeMillis() - startWait < 5000) { java.lang.Thread.sleep(100); }
binder = binderHolder.get("binder");
if (binder == null) { tasker.showToast("Could not connect to OsmAnd"); return; }
/* Create AIDL interface from Binder */ StubClass = java.lang.Class.forName("net.osmand.aidlapi.IOsmAndAidlInterface$Stub", true, loader); asInterfaceMethod = StubClass.getMethod("asInterface", android.os.IBinder.class); api = asInterfaceMethod.invoke(null, binder);
if (api == null) { context.unbindService(connection); tasker.showToast("Connected to OsmAnd but API access failed"); return; }
/* Widgets */ widgetResult1 = addWidget("tasker_media_playpause", "Play / Pause", "⏯️", 0, "PLAYPAUSE"); widgetResult2 = addWidget("tasker_media_next", "Next Track", "⏭️", 1, "NEXT"); widgetResult3 = addWidget("tasker_media_previous", "Previous Track", "⏮️", 2, "PREVIOUS");
context.unbindService(connection);
if (!widgetResult1 || !widgetResult2 || !widgetResult3) { tasker.showToast("Plugin installed. Activate it, restart OsmAnd and add widgets in Configure Screen."); return; }
tasker.showToast("OsmAnd media widgets installed"); ```
r/OsmAnd • u/Maxiride • 20d ago
I really like Osm and also bought the full license for its many features. However I often go back to mapy.cz to browse maps because I find Mapy maps to have less clutter and be more efficient when navigating trails, osm has too many things on the screen at once.
For example two screenshots of the same area.
I made a new custom profile for Hiking based off the built-in Walking one and I am trying to tweak the settings to make the map more clear at a glance but I am having an hard time.
Is there any public profile to import? I believe others might have had the same issue.