bryceco/GoMap

OpenStreetMap editor for iPhone/iPad

Swift

415

4,391 commits

updated Oct 18, 2026

See the code

README

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.

editor
ios
macos
mapping
openstreetmap
swift

bryceco/GoMap

OpenStreetMap editor for iPhone/iPad

Swift

415

4,391 commits

updated Oct 18, 2026

See the code

README

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.

editor
ios
macos
mapping
openstreetmap
swift

Significant stargazers

Louis Pilfold

2,558 followers · starred Apr 2023

Mingye Wang

377 followers · starred May 2024

Petr Korolev

539 followers · starred Jun 2025

Hiroshi Miura

239 followers · starred Mar 2021