Use OsmAnd power
for your needs

Use OsmAnd API

OsmAnd API allows you to control installed OsmAnd app and change it for specific needs. The advantage of integrating with OsmAnd API that it is pretty easy to kick off development, could be embedded in any specific application and there is no specific requirements about Licensing of the target app. The main disadvantage user should have OsmAnd installed on a device.

OsmAnd API features:

  • Adding favorites and markers to the map
  • Navigation between locations
  • Creating audio/video/photo notes
  • Starting and stopping GPX track recording
  • Importing GPX tracks into OsmAnd and navigatin along them
  • Other non-documented features might be already present or implemented by request

Create new rendering style

Creating new rendering style is possible without any change in the program. Style definitions could be difficult if you want to write it from scratch for example Nautical style or Default style (15K lines of code). It is advised to create a dependent style so you could change start changing style by small pieces. For example UniRS style contains mostly color redefinition and icon appearance.

To test rendering style you could use OsmAndMapCreator. In case you would like to use in the OsmAnd on device. You need to put the xml definition of the style into folder on sdcard ('rendering') next to other rendering styles.

All rights on the style is created belongs to the author. Though these rights could not be applied to the OsmAnd binaries and .

Customize routing engine

In some cases you might want to extend or adjust routing experience of OsmAnd, so you could add extra parameters, add extra barriers or change some penalties. Please take a look at routing.xml. OsmAnd routing is using 2 directional A* algorithm based on fastest time (= distance/(speed*priority) + penalties) . It is a pretty easy format. It is divided into 7 sections (evaluation groups):

  • access (1 allow, -1 not allow)
  • speed (number that presents speed in kmh)
  • priority (number between 0 and 1) - a multiplier to the speed and it is still bound to maxSpeed, so minimum(speed * multiplier, maxSpeed) will be used for A*
  • oneway (1, -1 or 0) - used to clarify access based on direction of the movement
  • penalty_transition (penalty in seconds) - used to define penalty when user goes from high class road to low class road. For example, motorway - 10, trunk - 15, if user goes from trunk to motorway penalty will be 5 seconds (=15 - 10). This penalty will be used by A* algorithm. There is no penalty if user goes from trunk to motorway and there is no penalty if route continues from motorway to motorway.
  • obstacle (penalty in seconds) - defines penalty which is to the routing time
  • obstacle_time (penalty in seconds) - defines penalty which is displayed to the user but it is not considered by routing engine i.e. obstacle_time - 2 hours, obstacle - 1 minute, on the shortest route engine will find a route using 1 minute obstacle but user will see that route time is 2 hours.

In order to test routing.xml you could use OsmAndMapCreator. To test routing.xml on a device, you could just replace default routing.xml in the root OsmAnd folder on the sdcard.

Contact us for development

In case you have are not sure which case fits you the most or you would like to ask help from developers who has experience in building application integrated with OsmAnd, please don't hesitate to contact us business@osmand.net!