All Projects → graphhopper → graphhopper-ios

graphhopper / graphhopper-ios

Licence: Apache-2.0 license
iOS Port of the GraphHopper road routing engine

Programming Languages

objective c
16641 projects - #2 most used programming language
Makefile
30231 projects
shell
77523 projects

Projects that are alternatives of or similar to graphhopper-ios

graphhopper-navigation-example
GraphHopper Navigation as App
Stars: ✭ 72 (+7.46%)
Mutual labels:  navigation, graphhopper
routing-py
🌎 Python library to access all public routing, isochrones and matrix APIs in a consistent manner.
Stars: ✭ 106 (+58.21%)
Mutual labels:  navigation, graphhopper
path planning GAN
Path Planning using Generative Adversarial Network (GAN)
Stars: ✭ 36 (-46.27%)
Mutual labels:  navigation
timelens
Timelens command-line client
Stars: ✭ 39 (-41.79%)
Mutual labels:  navigation
jquery-scrollwatch
jQuery plugin for determining active sections on the page based on scrolling
Stars: ✭ 18 (-73.13%)
Mutual labels:  navigation
hipsbarjs
Hipsbarjs is a javascript plugin for easily creating drawers in web apps
Stars: ✭ 17 (-74.63%)
Mutual labels:  navigation
navdatareader
Navdatareader is a command line tool that uses the atools fs/bgl and fs/writer to store a full flight simulator scenery database into a relational database like Sqlite or MySql.
Stars: ✭ 35 (-47.76%)
Mutual labels:  navigation
motion-planner-reinforcement-learning
End to end motion planner using Deep Deterministic Policy Gradient (DDPG) in gazebo
Stars: ✭ 99 (+47.76%)
Mutual labels:  navigation
NavigationRouter
A router implementation designed for complex modular apps, written in Swift
Stars: ✭ 89 (+32.84%)
Mutual labels:  navigation
diractions
👨‍💻 Doing Anything, Anywhere, from Here [zsh] 🚏
Stars: ✭ 30 (-55.22%)
Mutual labels:  navigation
easyRNRoute
https://medium.com/@kevinle/comprehensive-routing-and-navigation-in-react-native-made-easy-6383e6cdc293#.nttfeeq3p
Stars: ✭ 25 (-62.69%)
Mutual labels:  navigation
vox nav
A project to develop/adapt a navigation system for outdoor robotics in rough uneven terrains
Stars: ✭ 101 (+50.75%)
Mutual labels:  navigation
vue-bottom-navigation
Vue bottom navigation
Stars: ✭ 56 (-16.42%)
Mutual labels:  navigation
pygac
A python package to read and calibrate NOAA and Metop AVHRR GAC and LAC data
Stars: ✭ 14 (-79.1%)
Mutual labels:  navigation
UnityScreenNavigator
Library for screen transitions, transition animations, transition history stacking, and screen lifecycle management in Unity's uGUI.
Stars: ✭ 488 (+628.36%)
Mutual labels:  navigation
shortcuts-for-chrome
Chrome navigation menu for technical users.
Stars: ✭ 28 (-58.21%)
Mutual labels:  navigation
vscode-tree-view
VSCode extension that probvides mail symbol overview of the currently opened file
Stars: ✭ 26 (-61.19%)
Mutual labels:  navigation
navigation array
Helper function for building navigations for REDAXO cms
Stars: ✭ 22 (-67.16%)
Mutual labels:  navigation
godot 2d navmesh generator
Godot plugin that generates a 2D navigation mesh from collsion nodes.
Stars: ✭ 35 (-47.76%)
Mutual labels:  navigation
UT Framework
Various advanced tools built for Unreal Engine 4
Stars: ✭ 45 (-32.84%)
Mutual labels:  navigation

graphhopper-ios

graphhopper-ios wraps graphhopper and creates the libgraphhopper.a library to be used on iOS. Theoretically it should be possible to include other architectures, but for example MacOS currently doesn't work.

It uses j2objc to translate the .java sources into Objective-C.

Disclaimer: This is experimental so treat it accordingly. Feel free to help in any way.

Prerequistes

JDK 8 (Yes, jts source needs JDK 8), recommended is AdoptOpenJDK8 Maven XCode 11.4+ (works with XCode 13)

Getting Started

To get started run the following commands in Terminal:

git clone https://github.com/graphhopper/graphhopper-ios.git
cd graphhopper-ios
git submodule init
git submodule update
make cleanall
make class.list
make translate
make
./graphhopper-ios-sample/import-sample.sh
open graphhopper-ios-sample/graphhopper-ios-sample.xcodeproj

Switch scheme to graphhoppper-ios-sample and run against Simulator or the real device (requires Apple Developer account and signing setup in place).

To integrate GraphHopper in your project see Usage section below.

Community

Feel free to raise problems or questions in our forum.

Usage

  • You can add graphhopper.xcodeproj as subproject to your project (see details in Xcode section).
  • Or you can compile it as fat library (libgraphhopper.a) using make and add it and necessary interface files to your project. Current setup includes Simulator (x86_64) and iPhone 5s and higher (arm64) architectures. Not checked on Apple Silicon, although arm64 should cover it (see other details in Terminal section).

Xcode

To configure your project to use graphhopper.xcodeproj follow the steps below:

  • Drag&drop graphhopper.xcodeproj into your project (or use the menu File -> Add Files to...)
  • Expand graphhopper.xcodeproj and drag&drop the Translations and Libraries groups into your project (make sure you check "Create folder references" and have your target selected in "Add to targets:")
  • In the Build Settings of your project:
    • add -ObjC to your target's Other Linker Flags
    • add {path-to-graphhopper-ios}/j2objc/include and {path-to-graphhopper-ios}/src to your target's User Header Search Paths
  • In the Build Phases of your project:
    • in Target Dependencies add the graphhopper target
    • in Link Binary With Libraries add Security.framework (to support secure hash generation), libz.dylib (needed to support java.util.zip) and libicucore.dylib (to support java.text, which is a dependency introduced by j2objc 0.9.5)

You're now ready to use GraphHopper on iOS and OS X.

You are responsible for importing graph data. For an example check out graphhopper-ios-sample.

Terminal

Alternatively, you can translate and compile the library by invoking make in the Terminal. You can modify common.mk and library.mk to include all necessary arhitectures. This article provides good overview of options: https://docs.elementscompiler.com/Platforms/Cocoa/CpuArchitectures/ Then link the library graphhopper-ios/build/libgraphhopper.a and it's header files at graphhopper-ios/src manually into your project. For all the other configurations see the Xcode section above.

By default this method compiles the library for the following architectures: simulator, iphoneos.

Example

iPhone-offline-routing

Requirements

  • iOS 11.0+ or OS X 10.10 (it might work on older versions but haven't tested)
  • JDK 1.8 or higher
  • Xcode 11.0 or higher

Troubleshooting

If you run into problems, you can try one of the following:

  • if using Xcode, try cleaning up the project (Product -> Clean)
  • if using the Terminal, you can use one of these 2 cleanup commands:
    • make clean - will delete the /graphhopper-ios/build directory
    • make cleanall - if the first one didn't do it, this will delete everything related to the build process (you then need to run make class.list)

Refresh Code

The dependencies j2objc, hppc and jts should be downloaded automatically if not present. You can force to reload by removing them:

make dependencies/hppc dependencies/jts j2objc
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].