Giter Site home page Giter Site logo

merlos / ios-open-gpx-tracker Goto Github PK

View Code? Open in Web Editor NEW
569.0 41.0 143.0 6.9 MB

GPS Tracker app for iOS + WatchOS. Log your tracks without limits and share them; Open source GPX tracker app written in Swift

Home Page: http://www.merlos.org/iOS-Open-GPX-Tracker/

License: GNU General Public License v3.0

Swift 98.33% HTML 1.43% Ruby 0.13% C 0.11%
gpx ios ios-app ios-swift gpx-files offline-maps iphone osm xcode

ios-open-gpx-tracker's Introduction

Open GPX Tracker for iOS + WatchOS

Available on the app store

Open GPX Tracker is a GPS logger for iOS (iPhone, iPad, iPod) with offline map cache support. Track your location, add waypoints and send your logs by email as GPX files.

This app has no annoying time restrictions, no ads and no in-app-purchases. You can create unlimited GPX traces :).

If you are goint to track without Internet... don't worry! Before you go offline, browse the area where you'll be tracking and it will be cached and available offline.

We care about your privacy, all the data recorded using the application is kept in your phone (or in your iCloud), wherever you store it. The app does not share any GPS data with us or any other 3rd pary. For more information see the Privacy Policy

Requires iOS 11.0 or above. Open GPX tracker is an open source app.

GPS Tracker logs

You can use Open GPX tracker for:

Main Features

  • Displays tracking route in a map
  • Supports Apple Map Kit, Open Street Map, and Carto DB as map sources
  • Offline maps support (of browsed areas)
  • Pause / Resume tracking
  • Add waypoint to user location
  • Add waypoint to any place in the map with a long press
  • Edit waypoint name
  • Drag & Drop waypoint pin
  • Remove waypoint
  • Load on map a saved session and continue tracking
  • Displays current location and altitude
  • Displays tracked time
  • Displays user heading (device orientation)
  • Displays location accuracy
  • Displays tracked distance (total and current segment)
  • GPX files can be imported from any other app using the share option
  • Share GPX files with other apps
  • File sharing through iTunes
  • Settings
    • Offline cache On/Off
    • Clear cache
    • Select the map server.
  • Darkmode
  • Multi-language support (thanks to volunteers): German, English, Spanish, Finnish, French, Italian, Dutch, Portuguese (Brazil), Russian, Ukranian Chinese (simplified)

Apple Watch Features (since 1.6.0)

  • Create GPX Files on your Apple Watch
  • Pause/Resume tracking
  • Save into GPX File
  • Add waypoint to user location
  • Send file to your paired device iPhone/iPad
  • Display GPS Signal strength
  • View current location information (speed, latitude, longitude, altitude)

Install

The app is available on the App Store, available since May 2015.

Another option to install the app is to download the source code and compile it by yourself using Xcode and the iOS simulator. If you want to run it on a iOS device, you also need an Apple developer account.

Translate Open GPX Tracker

Open GPX tracker supports language translations (since 1.7.0). See list of supported languages and how to translate the app into your language.

Development

This application is written in Swift. To download the code run this command in a console:

 git clone https://github.com/merlos/iOS-Open-GPX-Tracker.git

Then, to test it open the file OpenGpxTracker.xcworkspace with XCode.

Although the application uses some Cocoapods, all the pods are already included in our repo. So no need to run pod install.

Please note the limitations of using Open Street Maps Tile Servers

Add a custom tile server

Adding a tile server is easy, just edit the file GPXTileServer.swift, uncomment the lines with AnotherMap and modify the templateUrl to point to the new tile server.

You have a list of tile servers in Open Street Map Wiki

Reference documentation

The application is being documented using jazzy and following NSHipster tutorial on swift documentation.

Documentation Status

Read Source code documentation

Contribute

You can contribute by forking and submitting a pull request (PR).

Some conditions for a PR to be accepted:

  1. Text displayed in the application shall be internationalized.

    • To do that use NSLocalizedString. Search on the code to see examples of usage.
    • Add the keys of the localized string to all the lproj files. Keep this files organized in the same way (~ same line).
    • Use ChatGPT or DeepL to translate them to other languages. For example, for ChatGPT you can use a prompt similar to:
        You are a language translator that is in the process of translating an mobile application for getting GPX traces in an iOS device. 
        
        Please provide the translation to the following languages:
        German (de), Spanish (es), Chinese Simplified (zh-Hans), Ukranian (uk), Finnish (fi-FI), Russian (ru),French (fr), Dutch (nl), Portuguese Brazil (pt-BR), Italian (it) 
      
        of the following strings:
      
        "TEXT_KEY" = "This is the text";
        "TEXT_KEY" = "This is the text";
        ```
      
      
      
  2. You need to install swiftlint and ensure you're not introducing additional lint warnings.

  3. You need to document the classes and methods that you create explaining what do they do from a blackbox perspective. We use jazzy for the documentation. To install jazzy run:

    gem install jazzy

    Then, to view the documentation run

    jazzy

    Note that it will generate the documents in the ../gh-pages/docs.

PR License Note that though the source code is licensed under GPL 3.0 by submitting a pull request you are also providing me (Juan M. Merlos) the rights to distribute those changes on the binary app published on the App Store (which is released under Apple's Standard License Agreement)

GPL License

Open GPX Tracker app for iOS. Copyright (C) 2014-2023 Juan M. Merlos (@merlos) & Contributors

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


Please note that this source code was released under the GPL license. So any change on the code shall be made publicly available and distributed under the GPL license (this does not apply to the pods included in the project which have their own license).


This app uses:

Entry on the Open Street Maps Wiki

See also:

ios-open-gpx-tracker's People

Contributors

digipix avatar dillona avatar ezyron avatar leonspok avatar merlos avatar neofusion avatar nitricware avatar nsmutablestring avatar onato avatar onix avatar papadave66 avatar raphaelschaad avatar sebastianwild avatar vincentneo avatar yoiang 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  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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ios-open-gpx-tracker's Issues

Use track as route

On reflection, my original comment for an enhancement is not clear. The real function being sought is to plan and save a route by dropping pins on the map as waypoints. OGT draws links between the pins and incrementally calculates the sum of the distances between the pins. The functionality described in my original comment then still applies.

My original comment . . . Using a pre-recorded track as a route is very useful. It's possible with very little modification . . .
• select required track from list ('load in map')
• track is displayed with its distance and duration (as previous comment)

  • add waypoints if required (as now)
    • if required, save track together with waypoints (as now). While saving, change name to include 'route' if required
    • press START: distance and duration are zeroed, then begin counting up
    • pre-recorded track (now a route) stays on screen in blue (not cleared, as now, when distance/duration is RESET)
    • new track is plotted in red
    • PAUSE then SAVE stores the new track only (which becomes blue)
    • PAUSE, without SAVE, retains both route and track on screen
    • probably, RESET becomes redundant but is replaced with CLEAR (to remove track/s from screen)

No Routes When Starting With A WayPoint - IPhone5

Routes do not display and record to a file when I add a waypoint before pressing the Start Tracking button. this only happens if my first action on loading the app is to set a waypoint. If I open the app and start tracking a route first, both routes and waypoints function normally. Also, if I reset the route ( after recording a route before any waypoints), and then add a waypoint first, both routes and waypoints function normally.

This was observed on an IPhone 5 with the latest version of the app. The issue persisted after removal and reinstallation of the app.

All data lost after crash.

Since the tracked points are only stored in memory, if the app crashes all data is lost. This could also happen if iOS or springboard crashes.

I would suggest serialising the points in a way that is fast and doesn't suck the users battery. I guess appending each new point to the end of a file would use the least amount of power. We could use our own JSON format or use a GPX format.

I would be happy to help out with the implementation. What do you think?

Enable file sharing through iTunes

iTunes file sharing would allow people to copy all GPX traces to a computer without needing to email them one by one.

Have a look at the image below for an example of what iTunes file sharing looks like.

iTunes file sharing

Import facility

Enhancement . . . After distance display, I see import (.gpx) as a major feature / opportunity. OGT already has export via mail. Mail is a great way to distribute .gpx tracks because it's simple for all involved. I've noticed that clicking onan attached .gpx file in Apple mail / IOS causes IOS to offer a list of available apps that can read .gpx files. Selecting a reader (such as 'gpx reader' allows a direct import and display of the track. Maybe making OGT just a .gpx reader -- rather than adding a comprehensive import dialogue -- is a way to to get started with this functionality.

Landing page graphic

Enhancement: A suggested landing / start page.
If liked I can supply the image to the aspect ratios required.

Disable map-snapping

The tracking seems to "snap" to roads when driving close to existing roads in the map-layer. When driving/walking "off-road" or far from an existing road, the tracking is great (3-5 m accuracy), but then when close to a road, It can abruptly "snap" to what it believes to be an existing road.

This makes it really hard to capture when stretches of roads are altered slightly. Maybe this could be an option?

Sync with dropbox

From #17.
Synchronize the folder containing all the GPX files with dropbox or some service in the cloud.

Wish: Add ability to import GPX file via URL

If I am on my desktop, then I can easily download a GPX file, and get in some fashion or another to be able to be read by GPX reader, however, when on vacation, I sometimes only have my iOS devices, and downloading a URL is not always easy or even possible for me. It would be great if I could just paste a URL, and get GPX Reader to open a GPX file from that location.

Not possible to see the description of waypoints in a gpx file.

I use the app to see EV chargepoint data in offline mode. When I import a gpx file I can only see the CDATA fields. I also want to see the CDATA fields.
Can you fix this ? I have attached a sample gpx file.
GoingElectric (4).gpx.zip

If possible (nice to have) can you add a text filter option so I can filter for example on 43kw (faster but less) and 22kw/11kw (slower but more) chargepoints with one file ? Or color code (red/orange/yellow) them ?

Info Button is unresponsive

Most of the time the Info-Button at the top right corner is unresponsive. The Info-Menu nearly never opens.

Wish: recording off-road AND/OR on-road tracks

Hi All,
I wish there could be an option, via a bluetooth button/switch or so, to record off-road/on-road pieces of the trip. And also at saving time a choice for saving only off-road OR on-road, or both, parts of the trip.
To finally, for me, to create an off-road map.

Heading vs orientation of the map

Before writing this comment, I had not realised that OGT, like Apple Maps (that it currently uses), allows finger-rotation of the on-screen map, for instance to allow manual alignment of map North (top) with Magnetic North (the latter as detected by the device's compass function). My comment was a long-winded way of saying it would be great if OGT defaulted to automatic, continuous alignment of map North with compass North. As with Apple maps, the OGT compass icon is very small, even on an iPad -- and only appears after the on-screen map is finger-rotated. Ideally the icon is larger, always on and graphically combines map North and Compass North -- thus emphasising that the above functionality is in operation. I also noted that certain map captions do indeed already rotate when the map is rotated. Combine this with continuous centering of the gps target, and you have a very user-friendly navigator app.

My original comment . . . Several trackers I've used, either don't have a heading function or present the function in such a way as to confuse the user. I think most navigators orientate a paper map rotated such that the direction of travel coincides with the map content ie the map is not held with the top facing North.

To be pedantic, thinking of a mobile device, let's define the top of the device's screen as on the lesser dimension. Let's assume the device is held horizontally with that top furthest away from the user and the side of the screen (the side with the greater dimension) held parallel to the direction of travel. It would be useful if the app placed the direction / heading also parallel with the side of the screen –– rather than having the top of the map facing North.

I imagine the heading is calculated at least from the last two or three gps samples. Ideally the function described would be with a heading arrow symbol combined with a North direction (to avoid confusion as to what the arrow depicts). This implies auto-rotate of the device's screen via its OS is turned off. Setting the app like this could be the default function, with North at the top as an option (or not available at all to keep it simple).

Rotating map's text in step with the map's orientation would be amazing but I don't like to think of the code involved!

October 2015 update

Tested with iPad retina IOS 9

  1. App does not display correctly in portrait mode: full screen is not used and tracking data is not displayed. This was only tested with an iPad
  2. Distance data is repeated in small typeface for no apparent reason
  3. Compass partially obscures trip duration display.

Swift 1.2 compatibitlity

I tried to convert the source to swift 1.2 and replaced "UiKit" with "UIKit" but I still get several compiler errors like this one:

/Users/testprojects/iOS-Open-GPX-Tracker-master/OpenGpxTracker/GPXWaypoint+MKAnnotation.swift:66:17: Method 'setCoordinate' with Objective-C selector 'setCoordinate:' conflicts with setter for 'coordinate' with the same Objective-C selector

Just a Thought

Been using your Open GPX tracker for iOS for a while. But unfortunately I had to shift to Android phone (still using iPad though). Yet as open as Android is supposed to be, I still can't find a replacement of a lightweight GPX tracker like yours. I don't know if this would be the right place to say, but will you take the opportunity to code for Android too.

Interface Builder

Is there any reason why you are not using Interface Builder to setup your buttons?

Using IB would remove around one quarter of the code from the ViewController.swift.

iOS11 - impossible to send email

Regardless of how long the trace is, whenever I click on the Send by Email button the app crashes. It’s been like that ever since I downloaded it a month ago, so it went trough 2 iOS updates I think, never had it working.

The time stamp is wrong

I left my house at 11:38:50 and when I open the GPX time stamp it shows 19:38:50 so it is 8 hours ahead and therefore my photos do not seem to geotag to the location. Please advise on a possible fix?

track (line) not saved on gpx file when there is a long distance and waypoints

I may have completely missed the purpose of the App and/or missed to activate some feature.
I expected from a "tracker" to be able to hike or ride and get the track 25km ride marked 3 "manual waypoints" on the way and after the ride saved data to a GPX file.
The GPX file contained the 3 manual waypoints but nothing regarding the track.
Again, this may simply be a misuse of the App and if so apologise for this post.
Regards, Pierre
Tousr a vélo 2016-09-24.gpx.txt

Auto lock setting

I noticed the track recording turns off during auto-lock... Which could be solved with disabling the auto-lock (by setting) or continue to record gps tracking while in auto-lock. I'd prefer the latter but I am not sure whether that is an option....

(I am working on a gps app myself in swift2, so your project has me interested in many ways!!! Keep it up)

cannot save a waypoint only session

By default save button is disabled when the app is started and the user did not tap the start tracking button.
The problem is that if I add a waypoints, the session still cannot be saved (save button is still disabled). That is, I have to tap on the start tracking button to be able to save a session.

Proposed solution::
add the scenario: In a non started session, if I add a waypoint to the map, enable save and reset buttons.

Add default name for saving

Comment from a user:

"Some sort of auto timestamp to the file names so we don’t have to worry about keeping them in order. Right now, if we don’t give a saved track a name it saves it as a blank. Yes, I could keep track of the files by their creation dates/times but it would be nicer if the app gave it a name/time to start off with, which I could change should I want to."

Empty map after save

1.- Start tracking
2. Wait some time so a line appears
3. Tap on save

The result is an empty gpx file.

The problem is that the current segment is not saved.

Add distance as measure

Add the distance of the current track.
Use meters till 1k and then set km with two decimals (ie: 1.12 km)

App Store Rejection: App Icon and follow user icon are similar to Apple Maps folow icon

Apple Rejected the App. The reason:

8.3 - Apps that appear confusingly similar to an existing Apple product, interface, or advertising theme will be rejected

Your app contains features that mimic the Apple Maps icon at the bottom right corner of the Maps iOS interface or behavior.

We’ve attached screenshot(s) for your reference.

temp uilwkgxf
temp wjtexgag

Therefore it seems that the follow user icon is like Apple Maps follow user.

Here is an Apple Maps icon
image

It's curious because the Human Interface Guidelines of Apple say you should use similar icons as user is already familiar with them:


Bar Icons

iOS provides a lot of small icons—representing common tasks and types of content—for use in tab bars, toolbars, and navigation bars. It’s a good idea to use the built-in icons as much as possible because users already know what they mean.

https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/Iconography.html#//apple_ref/doc/uid/TP40006556-CH59-SW1

Also, something that I cannot understand is that the App Icon is the arrow, but I don't know how it may confuse the user.

I've summited an appeal

Take advantage of WiFi

More of an enhancement then an issue.

Allow the app to take advantage of Wifi when it is available.

No track data

Gave permission to location services.
Started tracking.
Walked around a park for 30 minutes.
Saved.
Sent as email.
Looked in GPX file and there was no tracking data, just a few waypoints I added.

Repeated the above with another park. Is there something missing?

Map not centred on location, on start up

As I recall, at my first use of the app, the map presented located instantly on the current location. Now the start mode is a location in the middle of the ocean! To get the map centred on the location takes two presses of the dart symbol. No big deal but confusing for a new user.

License

Would you consider using a more liberal license like MIT?

As far as I know GPL is not compatible with the App Store and that if Apple is aware of this they will reject the app.

Which Version Xcode for compiling

Hi,

I tried Xcode 7, now Xcode 6.4 ... i always get Swift errors.
What did you use to compile the current GitHub Version ?

Thanks in Advance and best regards,
Dominique

Resume tracking issue

I think its a bug or is it just in my phone. I'm using iPhone 5 with latest iOS 9 and whenever I pause tracking and tap on resume it didnot continue to track. I have to close the app and start tracking fresh.

File list: add track duration and distance

Requires #8 (add distance to current track).

In the file list, right now is only displayed the name of the track. The feature to develop is to add

  • distance
  • elapsed time

in the file list.

Maybe date?

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.