LocationMapViewer
Jump to navigation
Jump to search
LocationMapViewer | |
---|---|
Author: | klaus3b (k3b) |
License: | GNU General Public License (free of charge) |
Platform: | Android 4.1+ |
Version: | 0.3.8.210702 (2021-11-27) |
Languages: | German and English |
Website: | https://github.com/k3b/LocationMapViewer/wiki |
Install: | |
Source code: | https://github.com/k3b/LocationMapViewer |
Programming language: | Java |
A serviceprovider that allows other apps to show "points of interest" in a map through a simple intent-api. |
A serviceprovider that allows other apps to show "points of interest" in a map through a simple intent-api.
Features
- Support for displaying GPX, KML and KMZ files (For details see [1])
- Example: open a gpx or kmz file in an android filemanager
- Example: open a link to a gpx or kml file in an android webbrowser
- Support for interpreting Wikimedia-web-api xml
- Example: https://de.wikivoyage.org/w/api.php?action=query&format=xml&prop=coordinates%7Cinfo%7Cpageimages&inprop=url&piprop=thumbnail&generator=geosearch&ggscoord=28.12722%7C-15.43139&ggsradius=10000&ggslimit=5&pilimit=5
- Example: https://kmlexport.toolforge.org/?article=Category:Gran_Canaria&linksfrom=1&l=3
- Support for geo-uri-s
- Example: open a link to a geo uri in an android webbrowser.
- <a href='geo:0,0?q=53.0,8.0(Hello)'>geo:0,0?q=53.0,8.0(Hello)</a>
- Example: open a link to a geo uri in an android webbrowser.
- Support for geo-bookmarks
- to remember and quickly navigate to named latitude/longitude/zoomlevel
- Can work offline (without internet/wifi) once geodata is downloaded and cached.
- Other android apps can use LocationMapViewer through an intent api ...
- ... to show a map at certain latitude longitude zoomlevel with points of interest
- ... to pick a location from a map (i.e. "Where was this photo taken?")
Example Usage
This android java code will show a map with 3 markers:
Intent mapIntent = new Intent(); // we want to view the map mapIntent.setAction(Intent.ACTION_VIEW); // this will be shown as primary marker in the map // the coordinate 53.2,8.8 is in north germany where the map is centered around // z=1 means zoomlevel=1 showing the continent // the marker's caption will be "primary marker" Uri uri = Uri.parse("geo:53.2,8.8?q=(primary+marker)&z=1"); mapIntent.setDataAndType(uri, null); // this is the maps Caption mapIntent.putExtra(Intent.EXTRA_TITLE, "Hello Map"); // the map will contain 2 additional point of interest mapIntent.putExtra("de.k3b.POIS", "<poi ll='53.1,8.9'/>\n" + "<poi ll='53.3,8.7' n='Say Hello' \n" + " link='https://github.com/k3b/LocationMapViewer/' \n" + " d='This will be shown as a Marker. When clicking on the marker you " + "get this text and a link to LocationMapViewer' />"); try { startActivityForResult(Intent.createChooser(mapIntent,"Choose app to show location"), 4711); } catch (Exception e) { e.printStackTrace(); }
GeoIntentDemoActivity.java is the sourcecode of a complete android demo app that uses LocationMapViewer (or any other provider that supports "geo:" uris)
Minimal requirements:
- Android-2.3.7 - Android-7 (API 10ff) for version v0.3.5.170911(6)
- Android-4.1 and later (API 16ff) for version v0.3.7.210429
- internet/wifi-connection to download geodata and a SD-Card to cache geodata
Requred permissions:
- INTERNET: to download map data from Open Streetmap Server
- ACCESS_NETWORK_STATE and ACCESS_WIFI_STATE: to find out if wifi/internet is online to start downloading mapdata
- WRITE_EXTERNAL_STORAGE
- to cache downloaded map data in local file system
- to load gpx/kml-Files to be displayed in the map
- ACCESS_FINE_LOCATION and ACCESS_COARSE_LOCATION: to display my own location in the map
Note: the app that uses LocationMapViewer via the intent api does not need these permissions.
Resources
- LocationMapViewer is available via f-droid store or apk internet download or sourcecode at github
- Recent changes see History
- Licence: GPLv3 or later
LocationMapViewer is based on the libraries
- Osmdroid with OSMBonusPack for showing the map and
- k3b-geoHelper for processing fileformats geo, kml, gpx, ...