Home
Softono

GoMap

Open source Swift
396
Stars
47
Forks
100
Issues
16
Watchers
3 months
Last Commit

 About GoMap

OpenStreetMap editor for iPhone/iPad

Platforms

Web Self-hosted macOS iOS

Languages

Swift

Links

Need Help Installing GoMap?

We provide expert installation service for this software. Our team will install, configure, and secure GoMap on your server. plans start at just $30.

Go Map!!

Go Map!! is an iPhone/iPad editor for adding cartographic information to OpenStreetMap.

Download on the App Store badge

Tutorial/help on the OpenStreetMap Wiki.

Join our TestFlight beta!

Do you want to help testing pre-releases of Go Map!!? Become a TestFlight tester today! 🚀

Source code structure

  • iOS - App-specific UI code
    • CustomViews - A collection of UIViews and CALayers primarily used by MapView
    • Direction - The view controller for measuring direction
    • Height - The view controller for measuring height
    • OpeningHours - Support for recognizing hours via camera
    • PhotoShare - App extension so we appear in the system Share menu
    • POI - View Controllers for tagging objects
    • Quests - Quest VCs and related code
    • Upload - View controller for uploading changesets
  • Shared - General purpose code (drawing code, OSM data structures, etc)
    • Database - A SQLite3 database storing downloaded OSM data
    • EditorLayer - The low-level graphical display for drawing nodes/ways
    • MapMarkers - Markers for Quests, Notes, etc.
    • OSMModels - Code for managing and storing OSM objects (nodes, ways, etc.)
    • PresetsDatabase - Code for processing iD presets
    • Tiles - Aerial imagery processing and display
  • Images - Images used for application elements (buttons, etc)
  • POI-Icons - Icons used for map elements (POIs, etc)
  • presets - The presets database copied from the iD editor
  • xliff - Translation files

Application architecture

Architecture diagram

External assets

A number of assets used in the app come from other repositories, and should be periodically updated. Because updating these items can be a lengthy process it is performed manually rather than at build time:

Updating external assets

cd src
(cd presets && ./update.sh)			# fetches latest presets.json, etc. files and NSI
(cd presets && ./getBrandIcons.py)		# downloads images from various websites and converts them to PNG as necessary
(cd presets && ./uploadBrandIcons.sh)	# uploads imagery to gomaposm.com where they can be downloaded on demand at runtime (password required)
(cd POI-Icons && ./update.sh)			# fetches Maki/Temaki icons 
(cd xliff && ./update.sh)				# downloads latest translations from Weblate (API token required). The output is very noisy and can be ignored

Formatting

In order to have a consistent code style, please make sure to install SwiftFormat and run it on a regular basis. Consider setting up a pre-commit Git hook, as described here.

Assets

The Go Map!! app icon was created by @Binnette.

Presets and translation

Go Map!! is using iD presets, so you can improve translations by improving translations of iD presets.