Giter Site home page Giter Site logo

roblabs / openmaptiles-ios-demo Goto Github PK

View Code? Open in Web Editor NEW
30.0 4.0 11.0 70.31 MB

iOS demo app for showing offline maps for mobile.

Home Page: https://RobLabs.com/openmaptiles-ios-demo

License: MIT License

Shell 38.09% Swift 61.91%
mapbox maplibre offline-maps

openmaptiles-ios-demo's Introduction

Offline Map for Mobile

This repo describes how to build an Offline Map for mobile on iOS. Local assets such as vector data, styles, glyphs and sprites are built into a sample iOS app.

Features

Build

The MapLibre Mobile SDK is installed via the Swift Package Manager.

GitHub Actions


Command Line Building

# Build
xcodebuild -scheme GeographyClass build

# Test
xcodebuild -scheme GeographyClass test \
  -destination 'platform=iOS Simulator,name=iPhone 8'

# Test without building
xcodebuild -scheme GeographyClass test-without-building   \
  -destination 'platform=iOS Simulator,name=iPhone 11 Pro' \
  -destination 'platform=iOS,name=iPhone 8' \

Mapbox token

Create a new plain text file containing your access token, named either .mapbox or mapbox. To avoid accidentally committing this file to an open-source project, either you can save it to a location outside your project's version-controlled directory, or you can add this file to your project’s .gitignore file.

  • Then open the Project file
open openmaptiles-ios-demo.xcodeproj

Architecture

  • All assets are local and are accessed by Mapbox GL by the asset:// URI.
"sources": {
    "countries": {
        "type": "vector",
        "tiles": [
            "asset://geography-class.osm2vectortiles/{z}/{x}/{y}.pbf"
        ]
    }
},
"sprite": "asset://sprites/bright-v8",
"glyphs": "asset://glyphs/{fontstack}/{range}.pbf",

Soft Proofing Tiles

You can Soft Proof your tiles before they are installed into mobile by using Tileserver GL.

  • Discussion on whether .pbf can be compressed when using tippecanoe: mapbox / tippecanoe #582
    • tippecanoe -pC --maximum-zoom=7 -o poly.pC.mbtiles poly.geojson

Sample Tile JSON & Styles

Tile JSON with GitHub served .pbf. Choose either the Tile JSON or Mapbox Style

Locally served .pbf

# Install `serve` from https://www.npmjs.com/package/serve
#  yarn global add serve   # do this once

cd OSM2VectorTiles

# Serve raw `.pbf` files using [serve](https://www.npmjs.com/package/serve)
# serve -v # version

# Be sure to open `http://localhost:5000` to confirm what is being served
serve --cors --listen 5000 # serve current directory; CORS; listen on port 5000

# Using a different server to hook into those raw tiles
alias tsgl='docker run --rm -it -v "$(pwd)":/data -p 8081:80 maptiler/tileserver-gl --verbose'

tsgl  # starts Tileserver GL using the file config.json

Zurich Sample

Using the Zurich Sample from Maptiler.

See the metadata for details on

  • how to run Tileserver-GL using docker or npm.
  • How to fetch the Zurich MBTiles
Available Endpoints
tsgl --config OSM2VectorTiles/tileserver-gl/config.zurich.json

Geography Class

Geography Class does not conform the OpenMapTiles schema v3. You can inspect

Available Endpoints
tsgl --config tileserver-gl/config.geography-class.json

geography-class

  • (QuickTime has a bug when screen recording; as it still shows WiFi service is on, when it indeed is off)

Building

You can build the Mapbox Maps v10 version by checking out the tag v10-geography-class

export REPO=roblabs/openmaptiles-ios-demo

git clone --recursive \
  https://github.com/$REPO.git \
  tmp/$REPO

cd tmp/$REPO

TAG=v10-geography-class
git checkout tags/$TAG -b $TAG
xed .

Change Log

  • Jun 17, 2021
  • May 06, 2021
    • Upgrade MapLibre for iOS to 5.12.0-pre.1. MetalANGLE build.
  • Mar 12, 2021
    • Upgrade MapLibre for iOS from 5.10.0 to 5.11.0
  • Jan 30, 2021
    • Convert to Offline Maps with SwiftUI. Local style with local tiles using the protocol asset://
    • branch: mapbox-maps-ios-v10 updated with MapboxMaps Library from https://github.com/mapbox/mapbox-maps-ios
    • Rename project to Geography Class
    • Minimum iOS is 13.0
    • Tested with Xcode 12.4 & 12.5
  • Jan 26, 2021
  • Jun 24, 2020
    • Updated notes on how to use Tileserver GL
  • Jun 17, 2020
  • Jun 2, 2020
    • Update to use Carthage only; removed dependency on Cocoapods
    • Upgrade to Xcode 11.5
    • Upgrade to Mapbox 5.9 & mapbox-events-ios 0.10
    • Add Xcode Bots & Continuous Integration scripts
  • Dec 13, 2019
    • Move from Cocoapods to Carthage
    • Upgrade to Xcode 11.3
    • Uprade to Mapbox 5.5
    • Add local, private Mapbox Token
  • Nov 19, 2019
    • Upgrade to Xcode 10.1
  • Jan 30, 2017
    • upgrade to Mapbox 3.4.1 & Podfile
  • 2016 — Initial Version

openmaptiles-ios-demo's People

Contributors

klokan avatar roblabs avatar shinriyo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

openmaptiles-ios-demo's Issues

[Question] What is config.zurich.json?

It it the config.zurich.json file for map of Zürich, Switzerland?
If I want to change map to Japan, tileserver-gl/config.japan.json?
Where can I learn how to make tie file?

https://github.com/maptiler/tileserver-gl/releases/download/v1.3.0/tokyo_japan.mbtiles doesn't exist.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.