blankblank blank

Archive for the 'offline maps' Category

Locus, A GPS Mapping Application – Part II: Maps

Continuing on with my review of the Locus GPS mapping app for Android (Part I on the interface is here), today is map day. Locus has a strong selection of standard online map sources, roughly 30 vs. roughly about 20 for OruxMaps. Some are worldwide, others regional. These mapsets currently include:

  • Google Maps: Road, Aerial, Hybrid, Terrain, Korea
  • OpenStreetMap” Classic, Cycle, Transport, Osmarender, OpenPiste
  • OVI-Nokia map:Classic, Satellite, Terrain (Locus is the only app I’ve seen so far with these useful mapsets)
  • Yahoo: Classic, Satellite
  • Bing: Road, Hybrid, London A-Z, OS Maps
  • OSM-regional: UMP-pcPL, Hike&Bike
  • Freemap (Slovakia): Car, Turistic, Cyclo, Aerial
  • Yandex (East Europe): Classic, Satellite
  • Eniro (North Europe): Classic, Aerial, Nautical, Hybrid
  • MyTopo (USA): 1:24K topographic maps
  • Outdoor Active (Germany, Austria, South Tyrol)
  • Statkaart (Norway): Topo, Raster
  • Maps+ (Switzerland): Topography, Terrain
  • NearMap (Australia): PhotoMap, StreetMap, Terrain


While there is a reasonable amount of overlap in mapsets between the two, each one also has unique mapsets as well. For US users, the big difference is that Locus comes with the MyTopo USGS 1:24K topographic mapset built in, while OruxMaps doesn’t. You can add Terraserver topo maps to OruxMaps (more on this in a bit), but the MyTopo set is of higher quality, and some areas are more up-to-date.


The list of available online maps can be brought up with the map manager button, in the upper right of the main map screen. You’ll get a list of available online mapsets:


Mapsets are organized into groups by source, a better system than OruxMaps’ sequential list of all maps. If you tap on a source name, like Google …



… you’ll get a subset listing of all the available maps from that source. Tap on the map type to go back to the map view, and load that selected mapset. The listing scrolls horizontally, so if you can’t see the desired mapset, tap and drag the listing left or right to access it.

First time I tried using Locus in the field, I was shocked at how many mapsets I was unable to download, despite having a good cellular connection. Then I explored the Settings section; under the Map subsection of Settings, you’ll find  a setting called “Offline mode”. If this is checked, which appears to be the default, maps can only be downloaded to your unit when you have a WiFi Internet connection. This protects you from being surprised with massive data overage charges from your cellular provider if you don’t have an unlimited data plan; my plan is unlimited, so I left this unchecked, and all mapsets now downloaded properly.

As online maps are downloaded, either from a WiFi or cellular connection, they are automatically cached so that you don’t have to repeatedly download them. I presume the size of the cache is limited, and that older maps are deleted automatically, but I wasn’t able to find out this info. For longer-term storage of mapsets, and avoiding large data downloads over cellular connections, Locus lets you create mapsets from download data, and then load them as needed into the app.


To access this function, go to the “Download map” tab in the map manager. You’ll have several options for selecting the area you want maps for:

  • This screen – Downloads maps for the area currently visible in the main map screen. You’ll want to zoom in/out first to your desired area.


  • Select area – Choose a subset of the current map area by clicking and dragging; press on the green check button at the bottom to approve the selection, or the red x button to clear it and select a different area. You can zoom in/out in this view, but if you haven’t already selected the desired general area first, new map data will not be loaded in as you zoom in/out.
  • By state – Downloaded predefined areas. By “state”, this means “country”, not “US state” or other subregions. Fine for smaller countries at lower zoom levels, not great for larger countries.



  • By path – This is pretty slick. Select this option, and get the map screen, with a new toolbar near the bottom. Click the “+” sign to add a point at the center of the screen, then drag the map to the next location and add another point. Locus will define an area around that point for which it will download maps, and show that as a purple overlay. You can set the width of the area with the slider at the top, and also tap-and-drag points to adjust them. The “-“ sign removes the last point, while the red x deletes all points. When done, tap the green check box. Be sure to disable the button at the lower-right, as otherwise the map will keep popping back to your current GPS location.
  • Select POIs – If you have a set of waypoints loaded into a category (more on this in the next post), Locus can use those to define an area for maps to be downloaded for. Nice, but I wish there were a comparable option for tracks as well, similar to the “By path” option, but loadable from a GPX file.


Once you’ve made any of your area selections, you’ll get a screen with the available zoom levels for that map; you need to choose at least one. You can choose more, but it will make the map filesize larger; maximum allowable filesize is 2 GB. The total map size and tile count is shown at top right, and you’ll also see a preview of the highest zoom level maps at right. Label the mapset file using the text box at the top.


Tapping “Change type” to choose the type/location for the downloaded map files. You can either put the map tiles into the standard online map cache, create a new separate mapset, or add maps to a pre-existing mapset of the same type. I usually use “Separate map”, since I think it will minimize complications, but that’s just a guess on my part. Once you’ve selected a map type, you go back to the zoom level screen; tapping OK starts the download process. This is usually best done with a WiFi connection, as that will be much faster, and won’t count against any cellular data quotas.



Once complete, the new mapset will appear in a listing under the “User maps” tab; just tap on the mapset you want to select it. Generally, these maps work fine, but I sometimes noticed when scrolling the map that tiles would appear and then disappear for no discernible reason. However, when using the maps in general GPS navigation mode, this didn’t seem to be a problem.

As with OruxMaps, you can also create mapset files from online map sources with the free Mobile Atlas Creator software, setting Big Planet / RMaps SQLite as the output format; the app author has more info here.

So far, Locus is superior to OruxMaps in handling online/offline maps. But it falls short in two major areas:

– Adding new online map sources is more complicated in Locus than OruxMaps (although neither is easy). There’s a post at the Locus forum on the process, but I couldn’t find any actual working examples. In contrast, OruxMaps offers a sample wms_services.xml file to get you started, which adds Terraserver US topographic maps to the list of available maps, and the OruxMaps forum has more working examples.

– OruxMaps has a stand-alone desktop application that can convert georeferenced raster image files, like GeoTiffs and OziExplorer map files, into an OruxMaps-compatible mapset. There is no general tool like that for Locus; there’s a mention in the forum of an old utility that can convert OziExplorer map files, but the format it creates may be deprecated soon in Locus. And it doesn’t look like the utility program mapc2mapc currently creates Locus-compatible map files, either. So there isn’t currently a good way to get your own maps into a Locus-compatible format, and that’s a big drawback for me.

Coming up in part III – tracks and waypoints in Locus.

Locus, A GPS Mapping Application – Part I: Interface

Application Name: Locus Free

Description: Display online/offline maps for your position; GPS track/waypoint display and recording; compass; more.

Publisher’s website: Locus

Cost: Free ad-support version; Pro version ($5.50) removes ads, and add some minor additional functionality.

Version/date reviewed: v.0.9.28  /  3-15-11

Phone/OS: Droid X / Android 2.2


Android Market (mobile app only)
Android Market (browser)

I’ve reviewed two other apps that convert your Android unit into the functional equivalent of a handheld GPS unit. TrekBuddy I was less than overwhelmed with; OruxMaps I found to be terrific. I’ll spoil the surprise conclusion here, and say that Locus is not only closer to OruxMaps in quality than TrekBuddy, but gives OruxMaps a run for its money in some respects. In this multi-day review, I’ll compare Locus’s functionality to OruxMaps as appropriate. As with OruxMaps, Locus has so many features that I can’t cover them all, even over the next few days; look at the program’s website, and explore the Settings section, for more info on all of its functionality.



The basic interface for Locus has three toolbars at top, right, and bottom. Unlike OruxMaps, where all toolbars are fully customizable, only the right toolbar in Locus can be modified, and only by checking/unchecking pre-defined options. There are five functions available on the top toolbar. They are:


– An “info” icon, which brings up links to “About application”, a simplified basic guide to using the app, an incomplete online manual viewed in your browser, the version history, and a list of additional apps that can invoke Locus as a helper app.


– Title bar options: tapping on the title bar lets you choose what’s displayed there. In the picture below, coordinates was selected for display in the title bar. One drawback of Locus compared to OruxMaps is that the number of data fields displayed onscreen with the map is far more limited in Locus.


– A GPS icon, which brings up the GPS status screen, with options to turn the GPS and compass on/off to conserve power.


– A data manager, which lets you view tracks/points, import/export data (GPX/KML formats supported), and manage categories. Locus requires you to specify a category label in which to save points and tracks; while I found this annoying at first, I now see the value of forcing you to organize your data by label.


– A map manager, for selecting and managing online/offline maps (more on this later)



Access the right-toolbar options by the Android Menu button, then selecting “Set right panel”; this screen also gives you several other options, most of which can also be assigned to the right toolbar.


The available right-toolbar functions are:

  • Search in POI: This is a saved waypoint search function; there is no general POI database in this app.
  • Move Map: Instantly move the display to an entered address or latitude/longitude.
  • Points: A waypoint list/manager (MOTL, more on this later)
  • Track record: Brings up another toolbar for recording tracks (MOTL)
  • Parking (BETA): Record your current parking spot, with options to set an alarm (useful for timed parking meters), and taking a photo of the location:


  • Share: Lets you send the current map center coordinates, or a screenshot of the current map display, to email, Facebook, SMS, etc.
  • Add new route: Bit misnamed, as it lets you create a new track in the map display; a “route” is a sequential collection of waypoints, which Locus doesn’t seem to have support for. MOTL
  • Compass: Option to switch to compass view, which includes guide information if you’ve selected a POI/waypoint as your destination:


The compass has a long settling time, so it will take a few seconds for the “needle” to move to the current direction. I’d prefer the option to manually adjust this sensitivity, but it’s not too bad. What is bad is that it shows the magnetic direction, not the true direction, as OruxMaps does. I wish I could mandate that every compass app for Android  either have true direction as the only option, or have it as the default with magnetic direction as an option. For many areas, the two will be similar, but in some areas the difference is substantial; where I live, there’s an eleven-degree difference between true and magnetic directions. Hope this gets fixed in Locus in the near future. Now fixed; there’s a new Sensors menu in the Setting that lets you choose True direction (default) or magnetic, and adjust the sensitivity of the compass.



The bottom toolbar has five functions. When the first button is active (as above), and the GPS is on, the map will automatically scroll to your current location. If you tap and drag the map to view a different location while this button is active, it will automatically “pop you back” to your current location in a few seconds.


The second button is a zoom lock/unlock button. When it’s off, you can only zoom in to the native resolution of the map image (or double that, if you turn on “Double sized resolution” in Settings => Map). When it’s engaged, as above …


… you can zoom in well past the native resolution; the above picture isn’t even at the full zoom available, since that would just look like a jumble of pixels.


The third button lets you choose a direction option. “Rotate map” will spin the map so that the direction you’re facing, or moving in, is at the top. This mode drives me nuts as it tends to swing around wildly, so I usually leave it off.


“Show view” displays a “field of view” indicator when you’re standing still, as above. When you’re in motion, the view changes to a triangle/arrow that points in the direction you’re currently moving. Since Locus currently uses magnetic directions, this can be a bit off from the true field of view.

This control is also useful for restoring the map to “North at top”. In the default mode, Locus supports advanced multi-touch, which lets you rotate the map view by dragging two fingers on the screen in different directions. This also drives me nuts, as sometimes when I want to only zoom in or out, I wind up rotating the map; using this control pops the map back to a normal orientation. You can turn off advanced multi-touch in the settings section, as I have.

The toolbars are partially transparent, and fairly small, so I usually leave them all turned on. However, the Settings section allows you to set any, or all, of the toolbars to fade away after a few seconds; tap twice on the screen to make them visible again.

One final topic, peripheral to the interface. Like OruxMaps, Locus has the option to use an external Bluetooth GPS receiver to obtain position, in place of the built-in GPS receiver; this can be specified in the settings section. This has some major advantages for both battery life and position accuracy. Unlike OruxMaps, though, I was actually able to get this Bluetooth connection to work in Locus, though it took some effort. Android’s Bluetooth support is a bit flaky, and it can take multiple attempts to achieve a successful connection. If the first Bluetooth connection attempt doesn’t work, and you’ll get an error message to that effect, go to the GPS status page, and turn GPS off and then on again. It may take 3-6 attempts, but eventually you do get a working connection to your Bluetooth GPS receiver. The application can also use Bluetooth GPS via proxy apps like Bluetooth GPS, which replace the built-in GPS receiver position for all apps.

Tomorrow: A look at maps in Locus.

GPS Trip Recording And Online/Offline Maps With Trimble Outdoors

Application Name: Trimble Outdoors

Description: GPS app for trip recording, with online/offline maps

Publisher’s website: Trimble Outdoors

Cost: $9.99

Version/date reviewed: v.4.1.8  /  12-11-10

Phone/OS: Droid X / Android 2.2


Android Market link (mobile app only)
Android Market link (browser)

Trimble is probably best known for its professional lines of GPS and other measurement hardware. They’re also known for making really crappy software that runs them; you can often locate a Trimble user in the field by listening for curse words, as something else goes wrong with the software. Trimble Outdoors is an unusual foray into the general consumer field for them; do they do any better here?

The general idea behind the software is to create records of various kinds of outdoor activities, and upload them to the Trimble Outdoors website for storage and sharing. So you’ll need to create a free account at Trimble Outdoors to use the software at all.


Figure 1: After starting up the program, and logging in, you’ll see a list of of activities under which you can record trips. Start up hiking …


Figure 2: … and the app will fire up the GPS, load in maps for the area using the chosen mapset, and start logging your position as a track. From the list screen, you can also go to a list of previously-saved trips, and load them into the map view as well, either for viewing or for continuation of that trip.


Figure 3: Here’s a short pair of tracks, along with several waypoints. You can add waypoints, but there’s no on-screen control for that; you need to dive into the menu to find that control.


Figure 4: The Stats button gives you info about distance traveled, total time, and average speed; the Charts give you the choice of plotting either Elevation or Speed as a function of distance or time.


Figure 5: When you’re recording a trip, you can also capture photos, audio, or video, tagged with the location they were taken at.

When a trip is complete, you can save it on your Android unit. You can also upload it to your online Trimble Outdoors account, either for personal private storage or to share it with others:


And you have the option of sharing this trip on either Facebook or Twitter as well.

This all sounds great … in theory. In practice, this app has some major issues:

  • Screens can be slow and non-responsive, especially the start-up list of activities
  • The choice of in-app maps is limited to Bing maps (road, aerial, hybrid, terrain) and MyTopo topo maps; no OpenStreetMap maps, or anything else. Google Map imagery is only available if you export track and waypoint data to a separate screen; it’s not integrated with the app, the way it is with other Android GPS and map apps.
  • The app can be flaky in recording data. It’s supposed to continually record a track, but on several occasions track recording spontaneously stopped.
  • The app will cache maps for offline use, but the only way to do it within the app is to pan the map to the desired area, and then pan/zoom in around to save maps to the cache directory. This is really a crappy way to handle this; other map apps let you define a geographic region, and then automatically download the tiles for that region.
  • The default size setting for the cache is only 10 MB, far too small to save any significant number of maps; you’ll need to set this larger right away.
  • You can generate map caches at the Trimble Outdoors website, but the process isn’t straightforward. You zoom/pan a Google Maps view or MyTopo map view to show your desired area, and then select the maximum zoom level you want tiles for; the web app will then generate a zip file containing these tiles. You then have to manually unzip the zip file, and then copy the files over into the cache directory  on your phone (making sure that the cache is large enough to hold these tiles). And even though you’re viewing Google Map imagery in the app, the downloaded tiles will be in the matching Bing Maps format, not Google Maps!
  • Unlike other apps, you can’t create named mapsets that you can load in at will; you have the cached maps and that’s it.
  • You can’t import GPX track or waypoint files directly; you need to import this data into your online account to create a trip containing these, then upload this trip into the app on your Android unit.
  • You can create trips online using a Trimble Outdoors web app, including tracks/waypoints/audio/video/photos. But I found this web app to be sluggish and erratic in performance. Creating tracks where I wanted them to be was virtually impossible, as the track would stop following my cursor, then jump to an unintended spot.
  • There’s no way to directly export tracks or waypoints created in the app itself; you have to upload the trip to your online account, then export the data from there as a GPX or Google Earth KML/KMZ file.
  • If you load in an earlier trip, then try to exit that trip without saving it again, you can wind up deleting the earlier trip data (as I found out to my regret, several times).
  • There’s no integrated GPS status screen or compass.
  • The app can only really be used in portrait orientation; in landscape orientation, the app’s toolbar takes up so much space that there’s very little left for the actual map.
  • Finding app functions and settings is pretty much hit-and-miss; there doesn’t seem to be any rational layout of functions.
  • And I could go on …

Other issues: While I didn’t have any issues with crashes or force-closes, you might take a look at the Comments section in the Android Market listing for this app; lots of people seem to be having problems. Now that Google is reducing the amount of time you have to uninstall a program for a full refund, from 24 hours to 15 minutes, you really won’t have a lot of time to evaluate how well it will work on your phone.

Final thoughts: For an app that’s already in version 4, and has been around since 2009, it’s still not in very good shape, especially for the price they’re asking. While the ability to create georeferenced multimedia trips sounds pretty cool, the actual program function just isn’t reliable enough to make this worthwhile. And as a GPS mapping app, it’s missing a lot of functionality. If you want MyTopo topo maps, either BackCountry Navigator or Topo Maps would be a better choice; while neither of those is perfect, they have more of the GPS functions you really need to have, are far easier to use, and offer in-app map caching and mapset management. And for a solid general GPS map app, you’d do better with OruxMaps, which has a lot more features, and is free.

Turn Your Android Into A True Handheld GPS With OruxMaps – Part V: Creating Custom Offline Mapsets From OziExplorer And Calibrated Map Files

Yesterday, I covered ways to create an OruxMaps offline mapset from online map data like Google Maps and Bing Maps. But there may be occasions when you have a separate scanned map image that you want to use in OruxMaps. There’s a free Java app available from the OruxMaps website called OruxMaps Desktop that can convert properly-calibrated scanned map images into an OruxMaps-compatible format. It accepts calibrated map images in two kinds of formats:

OziExplorer-calibrated maps: These are scanned map images calibrated in the OziExplorer program. This is a full-feature GPS utility program, but unfortunately it’s not free – current cost is $100. However, if you search online, there are sources of free maps calibrated with this program. These will come in pairs of files: an image file (JPG, GIF, BMP, etc.), and a MAP file that contains all the calibration data needed by OruxMaps Desktop. Here’s a screen capture of such a file loaded into the program; load the MAP file with the Calibration file button, and as long as the image file is in the specified directory, or in the same directory as the MAP file, it should find it without problems:


Image files with worldfiles: These are often available for free from many websites, like the USGS Seamless Server. The image file contains the graphic imagery, while the worldfile contains calibration info for the image, that has some (but not all) of the data needed for the program to geographically calibrate the image. Worldfiles are simple text files with extensions that usually vary depending on what kind of image they’re associated with (jgw for JPEG, bpw for BMP, tfw for TIF, etc.). They contain information about the starting coordinate position in the upper-left-hand corner of the image, as well as the coordinate dimensions for each pixel. But what they don’t contain is information about the coordinate system used, and the units. You have to find out what this is for a map image; fortunately, there’s usually information about what kind of coordinate system was used in creating that world file available either from the download source, or with the downloaded files.

For example, I downloaded an aerial photo from the USGS Seamless Server website recently, and it came in a compressed zip file format. Inside the zip file were a number of files:


There are three files here that I need for use with OruxMaps Desktop:

  • 7714086.tif is the aerial photo image file
  • 7714086.tfw is the worldfile needed for calibration
  • 77140806.prj is a text file that contains information about the coordinate system used for calibration

After unzipping these files, I load the tfw calibration file and the tif image file into OruxMaps Desktop (note: to use TIF files, you’ll need to download and install the JAI I/O tools on your system; they’re available at this website (choose the file that includes “jre” in its name)).


As I load the calibration and/or image files, I’ll get a pop-up telling me that the datum (a set of equations describing the shape of the earth) and the projection (the type of coordinates used with this image) are undefined. For the OziExplorer example above, the MAP file includes this info; for this tiff image file with a worldfile, I’ll need to choose the correct values from the DATUM and PROJECTION dropdowns. In this case, I can open the PRJ file that came with the other files in a text editor, and find out what the correct values are for the datum and projection:

Projection    UTM
Zone          12
Datum         NAD83
Spheroid      GRS80
Units         METERS
Zunits        NO

The datum is NAD83 (North American 1983, and the projection is UTM (Universal Transverse Mercator). For UTM, I’ll also have to specify the zone, 12 here (a pop-up window will let me input that in OruxMaps Desktop):


From this point on, the steps are the same for both OziExplorer and worldfile maps. Specify the map name, destination directory, and the type of image format you want the tiles in (JPG or PNG), and press the Create Map button; a mapset folder with the mapset name will be created in the destination directory. For photographic images like aerial photos, JPG is likely to be the most efficient space-wise, and you can set the JPG quality with the dropdown. For graphic files like maps, PNG may be a better choice, but I’ve found the file size for PNG files to be huge. You then copy the mapset folder in the oruxmaps/mapfiles directory on your Android, and it will show up when you Browse maps from the startup screen, or look for offline maps from other screens.

If you have a scanned map without any calibration data, you’ll have to create a worldfile to go with it. This is often not a trivial process, but if you want to try it, here’s a list of free software and websites to help you. And if you have a GeoTiff file, which has the calibration info embedded in it but no worldfile, here’s a link to a program that will extract the worldfile, and here’s an app that will extract information about datum/projection used.

Turn Your Android Into A True Handheld GPS With OruxMaps – Part IV: Creating Custom Offline Mapsets From Online Map Services

Previous posts in this series: One, two, three.

As mentioned in Part Three, OruxMaps will automatically cache data from online map services, up to a user-specified limit. However, it can also use mapsets generated automatically from online map data in several different ways. This has the advantage of letting you specify the geographic area and zoom levels you want included, and letting the program handle the download chores; for cached data, you have to manually scroll to the desired area, and zoom in/out to cover all desired map zoom levels. If at all possible, you should only do this when you have a good WiFi connection, as these mapsets can easily run to 10s, if not 100s, of megabytes in size.


Figure 1: The first method for generating such mapsets is to use OruxMaps built-in mapset generator. From the main intro screen, choose Online Maps, select the online map source you want to use, and zoom/scroll to the desired map location and area coverage. Then go to Menu => Tools => Map Creator


Figure 2: Here, you can modify the latitude/longitude limits of the map, and select the zoom levels you want included. This is a bit inconvenient – other map programs let you manually select the desired area graphically rather than requiring lat/long values.


Figure 3: Higher zoom levels are greater detail, but will require more storage space; OruxMaps will tell you how much storage space will be needed, and how many tiles will be downloaded. For example, checking “17” and “18” here would increase the mapset size to 697 MB; checking “19” would exceed the maximum allowable size of 2000 MB, 2 GB. You’ll also need to specify a name for the mapset at the bottom. Once done, click on download, and you’ll get a progress bar; for a large dataset, be prepared to wait a while, even with a fast connection.


Figure 4: Once complete, the new mapset should show up in the list of offline maps that pops up when you choose Browse maps from the startup screen, or Offline maps from any map selection screen …


Figure 5: … and the selected mapset should load in. Zoom in to a level for which you have no data, and either you’ll get a blank screen, or a different mapset for which data for that zoom level exists will load in.

This works, but it isn’t the easiest system, and you’re limited to just those online mapsets available in OruxMaps. The app author himself doesn’t really recommend this approach, but it’s there if you need it. A better option may be to use the free Mobile Atlas Creator application. I’ve covered how to use this app in previous posts, so I won’t repeat the basic operations. But for creating a mapset for OruxMaps, the app-specific details seem to be:

  • Select OruxMaps or OruxMaps Sqliteas the atlas format (latter requires the SQLiteJDBC library file in the same directory).
  • You can add multiple mapset types to the atlas, but be sure to give each a unique name.
  • Create the atlas, and when complete, open the atlas folder.
  • Open the folder for the newly-created atlas, and copy the folders with the same names as the mapsets into the oruxmaps/mapfiles folder on your Android unit.
  • Start up OruxMaps, and you should get a message stating that the map database is being updated. If you don’t get that, you can do this manually from the startup screen with Menu => Update maps DB. Your mapset “should” show up in the Browse maps option.

Notice how I said that these “seem to be” the details? That’s because I couldn’t get this process to work on my Android, no matter how hard I tried. Others have reported success, so it must be something that I’m doing wrong, or some quirk with my phone.  If anyone else gets this to work, please post in the comments section, along with any special tricks you might have used. I’d really like to get this to work on my phone!

Tomorrow: Creating OruxMaps mapsets from scanned/downloaded mapfiles.

Turn Your Android Into A True Handheld GPS With OruxMaps – Part III: Managing Online And Offline Maps

Part I (OruxMaps interface) here; Part II (GPS Functionality) here.

OruxMaps has terrific map display functionality built into it. It can download and display map imagery in real-time from online sources like Google Maps and Bing Maps. But it also has the ability to use downloaded and saved map files to display map imagery even when no data connection is available, so you can use it in places where no WiFi or cellular coverage is available.


Figure 1: Here’s the start-up screen for OruxMaps. If you select Online Maps


Figure 2: The last online map service you used will be loaded in, at the last zoom level you used. Here, it’s Bing Maps at zoom level 19. If I want to select a different online map, I can press the Map Layers button on one of the button bars, hidden here, but which can be revealed by tapping in the appropriate location on-screen (see Part I of this review for more info). I can also use the Menu => Maps option to bring up the selection list …


Figure 3: There are roughly 30 different mapsets available by default in this list, some of which cover the whole earth while others have limited geographic coverage. If you pick a mapset with no coverage for your area, you’ll get a blank display. You can also add Web Mapping Service (WMS) servers to supply additional mapset options; more on this in a future post. If I select IFR-L …


Figure 4: … I get an aviation map for my area.


Figure 4: Online maps are just that: online. If you’re in an area with no data connectivity. i.e. offline, you can’t download new map data. However, OruxMaps will automatically save/cache map tile data in your Android unit’s memory, so that it doesn’t have to keep downloading the data over and over again. This cached data is also available when you’re offline as well. So one quick way to save map data for online use is to scroll the online map to your area of interest when you have a data connection, and zoom in to your desired detail level; every map tile downloaded for view will also be saved to the cache. This is a big plus if you’re on a limited wireless data plan – cache maps when you have a free WiFi connection, then use them later.

By default, OruxMaps sets a 256 MB minimum and 512 MB maximum cache threshold for saved map data. When you hit the maximum, it will tell you, and then process the cache to remove older map data until it hits the minimum cache threshold (the author cautions that this may take a while, and you should leave it undisturbed during the process.. You can adjust these threshold values up or down in the Settings => Maps online section.


Figure 5: In addition to online maps, direct and cached, OruxMaps lets you use custom created mapsets. These can be generated either from online map services, or from your own graphic map files. I’ll review some ways to create these and install them on your Android in upcoming posts. For now, I’ll just say that you can access these mapsets either from the Browse maps option on the starting screen (first pic above), or by clicking on the Offline maps button in the online map selection screen (third pic above).

If your last location fix was in a spot included on the selected map, you will go immediately to that spot; if not, you’ll be shown the middle point of that mapset. GPS tracking will normally be off in this mode; if you turn it on, and your chosen mapset doesn’t include your current position, you’ll be asked to choose a mapset that does include your current position, and you’ll be given a list of available maps that meet that criterion.

Maps are stored in the “mapfiles” subdirectory of the main OruxMaps directory on your SD card. Unfortunately, there’s no way inside the program to move/copy/delete mapsets in that program; you’ll have to either use a file manager like Astro File Manager or OI File Manager, or hook up your Android in USB Mass Storage mode to do this.


Figure 6: The map quality for custom mapsets can be very high; here’s a sample of a Forest Service topographic map, downloaded from the Forest Service raster data gateway. By default, these are displayed at 100% zoom, 1:1 pixel ratio, but you can overzoom in closer, or zoom out to view more area. For the latter, though, OruxMaps limits the number of map tiles loaded; however, as you move or scroll to new area, the corresponding map tiles are loaded automatically

According to the OruxMaps website manual (scroll to the bottom), you can also add a Web Map Service server to your list of online maps, which in theory could give you flexibility in adding additional online mapsets to OruxMaps from a wide variety of sources. However, I can’t get it to work on my phone, even though the OruxMaps forum reports success with other phones. If you can get it to work on your phone, please let me know in the comments section. Started working spontaneously for me after a short break; not sure what happened.

Tomorrow: how to generate custom mapset files from online map services.

Turn Your Android Into A True Handheld GPS With OruxMaps – Part II: GPS Functionality

Continuing on from Part I yesterday …

GPS Functionality


Figure 1: One feature I was excited to see OruxMaps had was integrated support for an external Bluetooth GPS unit; as I’ve posted about before, this has significant advantages for extending battery life and improving position accuracy. Unfortunately, I was unable to get it to work with my Bluetooth GPS unit; YMMV. The program really needs a special screen to help establish and confirm a good connection with the Bluetooth GPS. Fortunately, the excellent Bluetooth GPS app works fine with OruxMaps, so you can still use your external Bluetooth GPS unit even if OruxMaps built-in Bluetooth functionality doesn’t work. Hopefully, this will be addressed in future versions.


Figure 2: Online maps can sometimes have positions that are offset from their true positions, by anywhere from tens to hundreds of meters. OruxMaps has a killer built-in calibration function, accessible from the Tweaks menu, that lets you correct for such an offset, improving the accuracy of your position as displayed on the map. You’ll have to reset this every time you start up the app, as it appears to only be good for your current session.


Figure 3: To create a waypoint, just tap on the Create waypoint button on a button bar (the pushpin with a “+” next to it). You have the following options for input variables:

  • Waypoint name
  • Waypoint dropdown: lets you choose the waypoint icon from a preset list. No option yet for your own custom icons; I hope this comes eventually.
  • Description
  • Coordinates; default is your current position, but you can enter custom coordinates here (WGS84 datum only)
  • Projection: create a waypoint displaced from your current position by a certain distance and direction
  • Geocoding: supposedly does an online lookup of your current location, and then enters a corresponding geographic name. I couldn’t get this to work.
  • Extensions: lets you associate an already existing photo or video with the waypoint; you can also record an audio note, or enter additional text.


Figure 4: Saved waypoints are accessible from the map view with Menu => Waypoints. Waypoints displayed in the list can be loaded into the map view with the Menu  => To map option.


Figure 5: You can filter waypoints by type, distance from your current location (in km or mi., depending on the set unit system), date, or associated tracks. Only the filtered waypoints will then be loaded using the To map option. I do wish there was an option to select a single waypoint, or multiple waypoints, by checking them off on a list.


Figure 6: To log a track, tap the Record track button (the icon with multiple green flags and a red record button); to stop recording the track, tap the button again, and it will automatically be saved in the track database with the date and time as the name. You can set the track color and thickness in the Settings section.


Figure 7: You can access the tracks database list with the Menu => Tracks option, which shows when they were created, and their length. As with waypoints, you can filter this list to only display tracks within a certain date range or type. Unlike waypoints, though, you can choose a single track to load. In fact, you have to – one of OruxMap’s biggest drawbacks is that it can display only one track at a time. And if you’re recording a track, you can’t view a previously-saved track at the same time. Hopefully, this will be fixed in the future, so that you can display multiple tracks at the same time (and have them appear in different colors). On the plus side, if you load a track into a map, you can calculate the area enclosed by the track using the Menu => Tools option.


Figure 8: One very cool feature for tracks is the ability to display statistics for that track …


Figure 9: And plot parameters like altitude, speed and slope against either distance or time. If you have a compatible Bluetooth heartbeat monitor, it can plot that as well. Use the coupon code ORUXMAPS to save $5, and get the app’s author some affiliate revenue.


Figure 10: Tracks and waypoints can be imported in either the GPX or KML formats. OruxMaps will use the OI File Manager if installed to select the import file, so it doesn’t have to be in a program-specific directory. This makes Dropbox a very convenient way to import data; just drop the files into your computer’s Dropbox folder, download them to your Android unit using the Dropbox app, then use the OI File Manager to navigate to the “dropbox” folder to select them for import. Similarly, lists of waypoints/tracks, or individual tracks, can be exported into either GPX or KML format; in this case, though, the default folder will always be the “tracklogs” subfolder of the main “oruxmaps” folder, and the filename will be automatically generated.

These are just some of the features; a look through all the menus (plus a look on the website’s help manual page) will reveal many more. The app is also actively being developed, and more features are added/modified all the time.

Tomorrow, a more detailed look at using online and offline maps with OruxMaps.

Turn Your Android Into A True Handheld GPS With OruxMaps – Part I: Interface

Application Name: OruxMaps

Description: Provides most of the functionality of a dedicated handheld GPS unit.

Publisher’s website: OruxMaps

Cost: Free (donationware)

Version/date reviewed: v.3.27  /  11-27-10

Phone/OS: Droid X / Android 2.2


Android Market link (mobile app only)
Android Market link (browser)

In the very first post on this website, almost four months ago, I argued that Android had the potential to displace dedicated handheld GPS units, like those from Garmin, Magellan, and DeLorme. Thing is, while I’ve posted many times on apps that perform a few of the the functions of a dedicated handheld, I haven’t yet written about a decent app that turns an Android unit into a full replacement for one of those; some come close, but the feature sets tend to be a bit slim. Now that’s going to change – this week will be devoted mostly to a review of Orux Maps, plus a few additional posts about how to take advantage of some of its advanced features.

Orux Maps is the first app I’ve reviewed that turns an Android phone into a serious functional challenger for dedicated GPS units. It’s not perfect, but if you forced me to choose between my current handheld GPS and an Android phone with Orux Maps, I’d pick the latter (but I’m glad I don’t have to choose). I’m not going to even have a “Final thoughts” section with recommendations; if you’re serious about using your Android’s GPS capabilities, this is a must-have app, period. But I will review some of its basic capabilities.

Because OruxMaps has a huge number of features, the review will be broken down into sections. Today, I’ll talk about the interface; tomorrow, external Bluetooth GPS, waypoints and tracks; and the rest of the week will talk about the online and offline map capabilities of the program. Yes, you can use maps on the app with and without an active Internet connection.



Figure 1: Starting up the program brings you to this basic startup page. Browse maps brings up a list of pre-loaded offline maps (more on this later); selecting one of those loads the map, and centers the view on the center of the map. Actual location starts up the GPS, and if an offline map is available for that area, loads it in automatically. Online Maps starts up the map view with the last selected online map type. OruxMaps comes with a preset list of online map sources, including both the usual suspects (Google, Bing, Open Street Map), and some less-common ones (aviation maps, foreign topo maps). According to the website manual, you can add WMS servers to your list of online maps, but I had problems with that.

Settings lets you configure a huge number of options for the interface, units, mapping settings and the like. You can also access settings from the map screen, plus you have quick access to some of the more important settings from any map screen by using the menu button to select the Tweaks option.


Figure 2: Here I’ve have selected Online maps, which defaults to the last online map service used (Bing Maps). The GPS is on, as indicated by the small GPS icon in the upper right part of the map view, as well as the altitude/speed/accuracy data in the dashboard at bottom. If the GPS were off, the dashboard would only show the coordinates for the center of the display and the map zoom level. Clicking on the satellite icon at upper-left turns GPS tracking on and off.

The first thing I tried to do with the program was create a waypoint, but I was stumped initially. There was no menu item for creating waypoints, and the icons at top, from left to right, are:

  • Turn GPS on/off
  • Change GPS acquisition mode (time/distance) to Default defined in settings), Fast (continuous time, 5 meter distance), or Power save (every 30 seconds / 80 meters).
  • Turn track acquisition on/off
  • Zoom map in
  • Zoom map to 100% (one map pixel = one screen pixel)
  • Zoom map out

But no waypoint creation icon – wha?! Turns out, though, that if you tap and drag the icons at top from right to left, additional icons will appear …


Figure 3: These icons are (left to right):

  • Add a waypoint
  • Delete all waypoints and tracks from screen (does not delete them from storage)
  • View track/route waypoints (sometimes individual waypoints as well; this is a bit inconsistent)
  • Follow a route, unload it, or stop all navigation (including waypoints)
  • Go to a point, start of track/route, center of the map, or last GPS position
  • View track statistics (more on this tomorrow)

Three additional icons further off the screen let you select a map layer, go to the settings section, or start up the GPS Status app. OruxMaps doesn’t come with a satellite status/strength screen, but uses the GPS status app to display this info. You’ll need to have that app installed on your Android unit to use this function; if not installed, you’ll be sent to the Android market page for GPS Status to let you install it (it’s free). I’d prefer an integrated view in OruxMaps for this, especially one that displays coordinates in large font (so I won’t need my reading glasses).

A problem with this setup is that you may not need some of the functions defined by the icons, and having to scroll the icons in the button bar to reach one that you actually do use on a regular basis can be a pain. This bothered me until I discovered in Settings => User Interface


Figure 4: … that you can customize the button bar to include only the functions you want, and create  up to four of them on-screen, each with its own set of buttons (duplicates if you like). To add a button, just tap on the icon in the center control screen, then tap the arrow button to add it to the corresponding button bar (left, top, bottom, right). You can remove individual buttons from a bar by tapping on them, or press “Reset” to remove all of them from every bar. You’ll need to exit the map screen and then restart it to see the new button configuration.

Elsewhere in the Settings => User Interface section, you’ll find options to set other map screen options, like customizing the GPS dashboard to show additional info, turning the scale on/off, making the butttons larger, etc.


Figure 5: With multiple button bars and the dashboard, though, much of the map screen will be obscured.


Figure 6: But OruxMaps has additional options in settings that will cause the button bars and/or dashboard to disappear after a few seconds, leaving the map view fully unobscured. You can also turn off the Android status bar at top to free up even more display space for the map. Tapping briefly on the map screen at the position of the button bar or dashboard will make it appear again. I do wish there was the option to have a specific button bar always visible, and others disappear, but for now it’s all of them or none of them.


Figure 7: Unlike some map apps that only show maps in 1:1 pixel mode, OruxMaps lets you overzoom, making some of the finer details easier to see. For my area, Bing Maps has exceptionally high-quality aerial maps, at least 1-ft. per pixel or better, making it possible to spot very fine details.


Figure 8: You should definitely check out the Tweaks section, available from the menu. This is a shortcut to a number of options also available in settings, but easier to access this way. Perhaps my favorite is turning Compass and View Angle on. Compass puts a small compass view at the top, showing which direction is true north (magnetic declination is automatically corrected for), while View Angle shows a small yellow wedge overlay indicating which direction the phone is pointed. You can also set the map display mode so that it rotates either in the direction the phone is pointed, or in the direction you’re moving. Additional tweaks include the option to change the position cursor color, and dim the display for use at night.

That’s it for Part I; Part II tomorrow will look at GPS functionality and recording waypoints and tracks.

TrekBuddy: Offline Map Viewer And GPS Tracker For Android II

Continuing yesterday’s review of TrekBuddy

By tapping in the lower-right-hand corner of TrekBuddy’s map screen, you can flip through the compass screen, the computer mode screen (CMS), and back to the map screen. The compass screen is pretty rudimentary; just a needle display (no digital bearing), and it’s magnetic directions only (Figure 1):


If you’ve just installed the program, and now flip on to the CMS page, you’ll find it blank. Turns out that you have to download and install CMS themes by copying them into the TrekBuddy/ui-profiles directory, either from the CMS wiki page or the TrekBuddy forum. CMS themes are written in XML, and on the plus side it looks like you can create some very interesting themes, including scripting. On the downside, CMS theme creation isn’t for the newbie, even using GUI editors like CMS Creator and CMS Designer. What’s more, CMS themes appear to have rigid size specifications i.e. they’re written for particular screen pixel dimensions; so, you have to find or design a theme that’s close to your screen’s pixel size. Otherwise, instead of a CMS display that fills your screen (Figure 2):


You’ll get one that only partially fills it, with text so small that it can be unreadable (Figure 3):


Tracks And Waypoints:

The navigation screen (tap in the upper left corner of the map) lets you manage waypoints and tracks. Four submenus:

  • Waypoints – Waypoints need to be in the standard GPX format, copied into the TrekBuddy/wpts directory. But you can have multiple waypoints in a single GPX file, and select one of them to use for display or navigation. Once selected, you can “GoTo” it (jump to the map area where it’s located), “NavigateTo” it (though TrekBuddy’s navigation capabilities are limited), or use it in creating a route. You can a Field Note to it, useful for geocaching. On high-resolution Android screens, the waypoint text and icon can be so small as to be unfindable/unreadable; what’s more, only a waypoint that you’re navigating to will show up on-screen (Figure 4):


  • Tracks – Similar handling to waypoints; they’ll need to be in GPX format in the tracks-gpx directory, and you can only display one track at a time. You can navigate or route along a track.  Annoyingly, all the individual track points are displayed (Figure 5):


  • Record Current – Lets you record your current waypoint position, with your desired name and comment; time and altitude tags are added automatically. You can add a waypoint to an existing GPX file, or put it into a new GPX file on its own. Simple and easy to use – one of TrekBuddy’s best features.
  • Add Custom – For creating a waypoint by entering coordinates; otherwise, works the same as “Record Current”.

The process of recording tracks is clumsy and inflexible. In the “Location” menu (under Settings), you only have the options of never recording tracks, asking when you start up the GPS and then tracking all the time, or always tracking as soon as the GPS is on. You can’t stop a track, then start up a new one in the running program; the only way to stop a track and start a new one is to exit the program. You have the option of saving tracks in either GPX or NMEA format; tracks are auto-named with the date/time, and stored in either the tracks-gpx or tracks-nmea directory.

Other Issues:

  • Occasional Java exception error pops up – this doesn’t seem to affect program operation, and goes away after you tap on the “OK” button.
  • One program crash under odd circumstances; program died, but GPS tracking kept on going.
  • Several times, the touch screen locked up completely; any attempts to do anything on-screen brings up a “Keyboard locked” message. Once, random button pushing got rid of the problem; the second time, I had to power-down my Android unit and turn it back on again to get rid of the problem.

Final Thoughts:

There are a number of features I really like about TrekBuddy. The waypoint recording functions are pretty good, and the Bluetooth GPS option is a killer feature, one I hope more Android apps will adopt. And it does a decent job of map display and GPS tracking. I just wish there weren’t so many oddball quirks and inaccessible features that make using it a bit of a pain, at least in Android. It is a port of an app intended for use with OSes other Android, and I guess you can’t expect everything to port over smoothly. Worth checking out, especially for Bluetooth GPS, but I’m hoping to find a better map app, and/or that the Android bugs/quirks will get fixed.

TrekBuddy: Offline Map Viewer And GPS Tracker For Android I

Application Name: TrekBuddy

Description: Displays offline mapsets, GPS tracking, records waypoints and tracks, more.

Publisher’s website: TrekBuddy

Cost: Free (donationware)

Version/date reviewed: v.0.9.99  /  9-14-10

Phone/OS: Droid X / Android 2.1


Android Market link (mobile app only)
Android Market link (browser)

After too many recent posts on creating offline maps with MOBAC and MAPC2MPAC, and transferring them over to an Android unit, I’m finally back to actual GPS map apps. First up is TrekBuddy, a J2ME app originally written about 4 years ago, used on devices with Java Virtual Machines (Blackberry, Symbian, Palm, Windows Mobile), and more recently ported over to Android. The good part of its long history is that it’s fairly stable and reliable; the bad part is that it become clear fairly quickly that it wasn’t written originally as an Android app. Some operational quirks in Android are pretty minor, but others can be a real annoyance to deal with.

First off, the app comes with only a rudimentary low-zoom basemap (Figure 1):


… so you’ll need to prepare maps to use with it using MOBAC or MAPC2MAPC. There are essentially two loadable formats:

  • Maps (which MAPC2MAPC creates). In compressed format, these come as a *.tmi and *.tar file, containing map imagery and calibration data for a single zoom level.
  • Atlases (which MOBAC creates). These are collections of different kinds of maps, each of which can have multiple zoom detail levels. These come with a single atlas file (in .tar format) that contains catalogue information for all the maps in the atlas collection. You can also access individual mapsets independently of their atlas context.

You first need to copy an atlas collection, or a mapset, onto your Android unit (see this post for some ways to do that). These should normally go into the “maps” subfolder of the main TrekBuddy data folder, since that’s where the program looks for them first. However, it appears as though you can navigate within the app to folders in other locations on your memory card, so you could put them elsewhere; you can also change the default directory for data in the program Settings section. For this review, I copied the atlas created in this post, which consists of a single atlas index file (renamed to “kv.tar”), and three folders with OSM, MS and topo maps data. I also copied over a folder containing a mapset created with MAPC2MAPC, a converted USGS aerial photo.


Figure 2: To choose an atlas, select “Load Atlas” from the menu. Here, I first I select the kv.tar atlas file to open the atlas …


Figure 3: Then only the mapsets in the atlas are displayed. Choosing the “Topo Maps” mapset …


Figure 4: I see the three zoom layers I chose. Selecting the “17” level …


Figure 5: The topo map for that zoom level pops up. If I start GPS tracking (Menu => Start), my location will be marked with a compass circle.

“Load Map” works in a similar fashion, except that you’ll have to manually select the “.tar” file that contains individual mapset data, even if it’s the only file in a directory. You’ll also always be asked if you want to set this map as the default, which is annoying. And if you change your mind, and decide you don’t want to select an atlas or map, there’s no way to back out gracefully. Either choose a map, even the one you’re currently using, or you’ll have to exit the program by selecting “Exit” from the menu (back key doesn’t get you out of the program at any time).

But there’s a bigger problem. With three zoom levels for the topo mapset in the atlas, I expected to see some kind of zoom control in the map display to let me zoom in and out through the three available levels. I finally figured out that there is no zoom control; if you want to switch to a map of the same type, but at a different zoom detail, you’ll have to manually select it using the “Load Atlas” or “Load Map” function again. You can’t zoom in or out on a single detail level either; it’s always displayed at the native resolution. This is a huge pain; I don’t understand why mapsets in an atlas can’t automatically be loaded/unloaded with zoom buttons. On the plus side, GPS tracking was accurate, with the map scrolling fairly smoothly as I moved. Tapping and dragging to scroll the map also worked well.

The main TrekBuddy menu has six functions:

  • Start – Starts up GPS tracking; when started, this splits into GPS “Pause” tracking and “Stop”  tracking buttons
  • Load Map, Load Atlas – Described above
  • Info – Brings up a helpful screen describing keyboard shortcuts, which are the only way to bring up some functions. The problem is that these require a physical keyboard; there’s no option with touchscreen-only Android models to bring up the virtual keyboard, which locks out some of the functionality.
  • Exit – The only way to stop the program; you can’t get out using the back key.
  • Settings – Lets you modify the program configuration:
    • Basic – Set the default map, folder, startup screen, units and coordinate system. On the plus side, it supports 15 datums, along with UTM and lat/long coordinates. On the down side, setting the default map and folder is a pain, as you have to type out the full file path for it; would be better if there were a file/directory screen to do that.
    • Desktop – Set parameters for onscreen display (OSD), like scale, font size/transparency, decimal precision, etc.. The program seems to be optimized for low- pixel-pitch screens, as even the largest font size results in a fairly small on-screen size for my Droid X; other features also display so small that they can be hard to make out sometimes.
    • Location – Lets you set the tracklog recording to never/ask/always, track export format (GPX/NMEA), and the track interval in time or distance; it appears as though entering a negative value for time or distance renders that interval parameter inoperative. Also in this section is TrekBuddy’s big killer feature, the ability to use an external Bluetooth GPS unit instead of the built-in GPS for location tracking. I’ll cover Bluetooth GPS in future posts, but I’ll say now that this option is a huge plus for TrekBuddy.
    • Navigation – Lets you set parameters for navigation like waypoint/track display, proximity parameters and more.
    • Misc – Some cryptic operating options; I’m guessing there’s documentation at the website, but I couldn’t find it.

The first time I tried setting some of these options, I got incredibly frustrated – the program kept reverting back to the starting defaults. I finally figured out that if you change any option in a Settings section, you need to press the menu button to bring up an “OK” menu listing, then tap on that. Then, before exiting the main Settings list to go back to the map, you need to press the menu button, then tap on “Save” to permanently record your option changes. I don’t see why the program can’t just automatically save whatever changes you’ve made after exiting a section.

I knew from the main website and some of the settings that TrekBuddy had options for recording/navigating tracks and waypoints. There was also supposed to be a compass screen, and a computer mode screen (CMS), displaying numerical data like GPS satellite info, position, etc.. But without a physical keyboard, it looked like some of these were totally inaccessible on my Droid X. Then I accidentally stumbled on a partial solution: some key features could be accessed by tapping on specific parts of the Droid’s touchscreen:

  • Upper-left corner tap brings up a screen for waypoint and track control (Figure 6).


  • Lower-left corner brings up all the options accessible with the menu button; tap anywhere else to make it disappear (Figure 7)


  • With an atlas loaded, tapping just above the lower left corner brings up the atlas layers; you’ll still have to select the zoom level you want.
  • Bottom-center fills in the circle/compass display that marks your position, making it easier to see the compass points and the direction-of-movement arrow
“Empty” circle
“Filled-in” circle
  • Bottom-right switches from the map screen to compass to CMS back to map
  • Left-center, right-center and top-center pause tracking
  • Tapping in the middle resumes paused GPS tracking, and also brings you back to your current position if you’ve scrolled the map to a different spot

More tomorrow on the compass/CMS screens, and waypoint/track management.