MyMapGps


Prototype version

This program is under development and not yet relased. This document is currently a mix of a documentation draft and my own to-do-list.


Introduction

MyMapGps is an application for GPS-equipped Android devices. The purpose is to be able to use own scanned maps for navigation. (The background history is that I have some paper maps in scale 1:10000 that I would like to be able to use since they are much more detailed than the maps available for my Garmin GPS. So I decided that it would be really nice if I could get these maps into my phone.) Please read the section on map calibration - if you can not provide the needed data for your maps, then the current version of this application will not be useful for you!


Features and limitations

The application is intended to be used with the users own image maps. There is no support for online maps etc.

New features will be added based on how much time I feel like spending on this project.


General requirements

You will need an device with GPS support and Android 1.6 or newer. A minimum screen resulution of 320*480 is recommended. The application has been tested on a LG Optimus One P500 and a LG P990 Optimus 2X, both with Android 2.2. Some additional testing has been done with Android 1.6 in the emulator in the development environment.


Map requirements

The map must be stored in jpg or png format. Try to save the map with the lowest resolution and quality that still looks good. (I recommend to use a map smaller than four megapixels to prevent out-of-memory problems. In Android there is a memory limit for each application, so it is possible to run out of memory even if there is lot of RAM and few other applications running.) The following requirements must also be fullfilled:

If you want to use another map projection than the pre-defined you will also have to enter some parameters for your map projection:

Note that the map projection parameters must be valid for WGS84, if you use parameters for older systems like Bessel1841 it will result in a mispositioned map. (GRS80 is close enough to WGS84, so that will work fine.)

I will probably add some alternative calibration methods in future versions. However I found that the current one gives a much better result than e.g. moving to a few points and use the GPS coordinates for those points as calibration data. (If your map have grid lines and you do some preparations in Gimp or Photoshop you can achieve a very good result. Otherwise you need to be aware that scanned paper maps will not be perfect. (Paper might shrink differently in different directions and your scanner might skew the image slightly)

It is important to be extremely careful when calibrating a map. Assume that you have a map over a 10*10 km area; that your base coordinates are 10 meters wrong; the map is rotated one degree and the scale is one percent wrong. These errors together might produce an error of up to 300 meters in the map.


Main screen


The text at the top of the screen shows current information according to the user settings. (Sometimes it will also show map and GPS error information.)

The (scrollable) map will occupy the most of the screen. Your current location and moving direction is indicated by an arrow (if a location has been received from the GPS service and the location is within the map). Depending on your setting the map will either be oriented normally or rotate so that the direction you are moving in becomes up on the screen. The map will scroll automatically to match your movements.

If you have created any waypoint within the visible area they will be indicated with waypoint icons on the map.

Use the zoom buttons to zoom in and out. The center map will make your current location appear in the middle of the screen. If the location is not known or is outside the map then the map will be centered insted. This is useful if you "get lost" when you scroll around.

Use the menu button of your device when you need to change any preference, add a waypoint or switch to another map.



Settings



The following preferences can be changed:


Map calibration and loading


To load and to be able to use a map the following data must be entered:

The "Browse button" can be used to browse to the wanted map image instead of entering the full path. It also has the advantage that when a previously used map is selected, other fields will be set to the previously used values automatically.


If your map does not use one of the pre-defined map projections you will need to click the "Manage button to add (or edit) a map projection.




Waypoints

You can add (or edit) waypoints. The defult position is the current (or last known) position.



There are 10 different waypoint categories with different icons available. You can specify your own images by specifying a custom waypoint directory in your settings. The application will then look for icons in that directory. (For any category where an icon is not found it will use the default icon.) The icon images must be named according to wpnnn_xx_yy.png, where nnn = category, xx = x insertion point and yy = y insertion point. For example wp000_34_74.png will be used as an icon for the first category (number 0). When it is drawn on the map, the icon will be positioned so that the pixel at x = 34, y = 74 will be placed on the waypoints position on the map.

Do not make your own icons larger than needed. (The icons will be rescaled anyway, so making an icon larger will not make it appear larger in the application.)


Support, feature requests and Bug reports

Questions, feature requests and bug reports can be sent to mymapgps@ronnyhagerman.com

If you find a bug, please try to provide as much information as possible, like:


Planned new functionality

Some things that are currently not supported but that I am planning to add or eventually will add later are:


Known issues to be improved + to-do-stuff


Author

The application is written by Ronny Hägerman