4

I've seen Apple demoing the new simulator features in iOS5, and apart from static locations, they showed off the ability to simulate location movement on an application running on the Simulator. I have successfully simulated single locations using GPX files, but I can't find any way of simulating movement.

Did this feature get dropped at the last minute or am I missing something obvious?

Undistraction
  • 42,754
  • 56
  • 195
  • 331

2 Answers2

12

The <wpt> type supports a <time> element which can be used to simulate movement. Xcode will just go through the list of points in a loop. For example, here's a short 4 minute walk in the center of Berlin:

<?xml version="1.0"?>
<gpx
 version="1.0"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xmlns="http://www.topografix.com/GPX/1/0"
 xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd">

<wpt lat="52.529985" lon="13.403">
 <time>2013-12-08T12:00:00Z</time>
</wpt>

<wpt lat="52.529976" lon="13.403069">
    <time>2014-11-07T11:22:03Z</time>
</wpt>

<wpt lat="52.52987" lon="13.40308">
    <time>2014-11-07T11:22:6Z</time>
</wpt>

<wpt lat="52.52986" lon="13.402899999999999">
    <time>2014-11-07T11:22:09Z</time>
</wpt>

<wpt lat="52.529849999999996" lon="13.4026">
    <time>2014-11-07T11:22:12Z</time>
</wpt>

<wpt lat="52.52981" lon="13.401769999999999">
    <time>2014-11-07T11:22:15Z</time>
</wpt>

<wpt lat="52.529799999999994" lon="13.401599999999998">
    <time>2014-11-07T11:22:18Z</time>
</wpt>

<wpt lat="52.52978999999999" lon="13.401489999999999">
    <time>2014-11-07T11:22:21Z</time>
</wpt>

<wpt lat="52.52977999999999" lon="13.401399999999999">
    <time>2014-11-07T11:22:24Z</time>
</wpt>

<wpt lat="52.52978" lon="13.4014">
    <time>2014-11-07T11:22:27Z</time>
</wpt>

<wpt lat="52.529740000000004" lon="13.40145">
    <time>2014-11-07T11:22:30Z</time>
</wpt>

<wpt lat="52.52969" lon="13.4015">
    <time>2014-11-07T11:22:33Z</time>
</wpt>

<wpt lat="52.52962" lon="13.40155">
    <time>2014-11-07T11:22:36Z</time>
</wpt>

<wpt lat="52.5293" lon="13.40174">
    <time>2014-11-07T11:22:39Z</time>
</wpt>

<wpt lat="52.52897" lon="13.40196">
    <time>2014-11-07T11:22:42Z</time>
</wpt>

<wpt lat="52.528890000000004" lon="13.40197">
    <time>2014-11-07T11:22:45Z</time>
</wpt>

<wpt lat="52.52886" lon="13.40198">
    <time>2014-11-07T11:22:48Z</time>
</wpt>

<wpt lat="52.52827" lon="13.40243">
    <time>2014-11-07T11:22:51Z</time>
</wpt>

<wpt lat="52.52816" lon="13.40252">
    <time>2014-11-07T11:22:54Z</time>
</wpt>

<wpt lat="52.528059999999996" lon="13.402600000000001">
    <time>2014-11-07T11:22:57Z</time>
</wpt>

<wpt lat="52.527899999999995" lon="13.402740000000001">
    <time>2014-11-07T11:23:00Z</time>
</wpt>

<wpt lat="52.52764" lon="13.402910000000002">
    <time>2014-11-07T11:23:03Z</time>
</wpt>

<wpt lat="52.52742" lon="13.403100000000002">
    <time>2014-11-07T11:23:06Z</time>
</wpt>

<wpt lat="52.5273" lon="13.403190000000002">
    <time>2014-11-07T11:23:09Z</time>
</wpt>

<wpt lat="52.52721" lon="13.403260000000001">
    <time>2014-11-07T11:23:12Z</time>
</wpt>

<wpt lat="52.52713" lon="13.403300000000002">
    <time>2014-11-07T11:23:15Z</time>
</wpt>

<wpt lat="52.52706" lon="13.403340000000002">
    <time>2014-11-07T11:23:18Z</time>
</wpt>

<wpt lat="52.527029999999996" lon="13.403360000000001">
    <time>2014-11-07T11:23:21Z</time>
</wpt>

<wpt lat="52.526759999999996" lon="13.403480000000002">
    <time>2014-11-07T11:23:24Z</time>
</wpt>

<wpt lat="52.52618" lon="13.403670000000002">
    <time>2014-11-07T11:23:27Z</time>
</wpt>

<wpt lat="52.52607" lon="13.403700000000002">
    <time>2014-11-07T11:23:30Z</time>
</wpt>

<wpt lat="52.52607" lon="13.4037">
    <time>2014-11-07T11:23:33Z</time>
</wpt>

<wpt lat="52.52603" lon="13.4038">
    <time>2014-11-07T11:23:36Z</time>
</wpt>

<wpt lat="52.525999999999996" lon="13.40389">
    <time>2014-11-07T11:23:39Z</time>
</wpt>
<wpt lat="52.525369999999995" lon="13.40527">
    <time>2014-11-07T11:23:42Z</time>
</wpt>

<wpt lat="52.524989999999995" lon="13.40611">
    <time>2014-11-07T11:23:45Z</time>
</wpt>

<wpt lat="52.524969999999996" lon="13.40617">
    <time>2014-11-07T11:23:48Z</time>
</wpt>

<wpt lat="52.52495" lon="13.406239999999999">
    <time>2014-11-07T11:23:51Z</time>
</wpt>
<wpt lat="52.524939999999994" lon="13.40627">
    <time>2014-11-07T11:23:54Z</time>
</wpt>
<wpt lat="52.524939999999994" lon="13.4063">
    <time>2014-11-07T11:23:57Z</time>
</wpt>
<wpt lat="52.524939999999994" lon="13.406369999999999">
    <time>2014-11-07T11:24:00Z</time>
</wpt>
<wpt lat="52.52494" lon="13.40637">
    <time>2014-11-07T11:24:03Z</time>
</wpt>
<wpt lat="52.52493" lon="13.40648">
    <time>2014-11-07T11:24:06Z</time>
</wpt>
<wpt lat="52.524919999999995" lon="13.406600000000001">
    <time>2014-11-07T11:24:09Z</time>
</wpt>
<wpt lat="52.524899999999995" lon="13.406720000000002">
    <time>2014-11-07T11:24:12Z</time>
</wpt>
<wpt lat="52.52486999999999" lon="13.406910000000002">
    <time>2014-11-07T11:24:15Z</time>
</wpt>
<wpt lat="52.52483999999999" lon="13.407030000000002">
    <time>2014-11-07T11:24:18Z</time>
</wpt>
<wpt lat="52.52480999999999" lon="13.407140000000002">
    <time>2014-11-07T11:24:21Z</time>
</wpt>
<wpt lat="52.52469999999999" lon="13.407440000000001">
    <time>2014-11-07T11:24:24Z</time>
</wpt>
<wpt lat="52.52451999999999" lon="13.40792">
    <time>2014-11-07T11:24:27Z</time>
</wpt>
<wpt lat="52.52452" lon="13.40792">
    <time>2014-11-07T11:24:30Z</time>
</wpt>
<wpt lat="52.52442" lon="13.40788">
    <time>2014-11-07T11:24:33Z</time>
</wpt>
<wpt lat="52.52439" lon="13.407860000000001">
    <time>2014-11-07T11:24:36Z</time>
</wpt>
<wpt lat="52.524359999999994" lon="13.407850000000002">
    <time>2014-11-07T11:24:39Z</time>
</wpt>
<wpt lat="52.52387999999999" lon="13.407480000000001">
    <time>2014-11-07T11:24:42Z</time>
</wpt>
<wpt lat="52.52368999999999" lon="13.40736">
    <time>2014-11-07T11:24:45Z</time>
</wpt>
<wpt lat="52.52340999999999" lon="13.40719">
    <time>2014-11-07T11:24:48Z</time>
</wpt>
<wpt lat="52.52341" lon="13.40719">
    <time>2014-11-07T11:24:51Z</time>
</wpt>
<wpt lat="52.523309999999995" lon="13.40768">
    <time>2014-11-07T11:24:54Z</time>
</wpt>
<wpt lat="52.52325999999999" lon="13.407879999999999">
    <time>2014-11-07T11:24:57Z</time>
</wpt>
<wpt lat="52.523199999999996" lon="13.4081">
    <time>2014-11-07T11:25:00Z</time>
</wpt>
<wpt lat="52.523129999999995" lon="13.408299999999999">
    <time>2014-11-07T11:25:03Z</time>
</wpt>
<wpt lat="52.523039999999995" lon="13.40852">
    <time>2014-11-07T11:25:06Z</time>
</wpt>
<wpt lat="52.522909999999996" lon="13.40884">
    <time>2014-11-07T11:25:09Z</time>
</wpt>
<wpt lat="52.52265" lon="13.40957">
    <time>2014-11-07T11:25:12Z</time>
</wpt>
<wpt lat="52.52265" lon="13.40957">
    <time>2014-11-07T11:25:15Z</time>
</wpt>
<wpt lat="52.52271" lon="13.4097">
    <time>2014-11-07T11:25:18Z</time>
</wpt>
<wpt lat="52.52271" lon="13.40972">
    <time>2014-11-07T11:25:21Z</time>
</wpt>
<wpt lat="52.52271" lon="13.40973">
    <time>2014-11-07T11:25:24Z</time>
</wpt>
<wpt lat="52.52271" lon="13.409749999999999">
    <time>2014-11-07T11:25:27Z</time>
</wpt>
<wpt lat="52.52271" lon="13.409759999999999">
    <time>2014-11-07T11:25:30Z</time>
</wpt>
<wpt lat="52.52271" lon="13.409769999999998">
    <time>2014-11-07T11:25:33Z</time>
</wpt>
<wpt lat="52.522659999999995" lon="13.409829999999998">
    <time>2014-11-07T11:25:36Z</time>
</wpt>
<wpt lat="52.52266" lon="13.40983">
    <time>2014-11-07T11:25:39Z</time>
</wpt>
<wpt lat="52.52263" lon="13.40987">
    <time>2014-11-07T11:25:42Z</time>
</wpt>
<wpt lat="52.5226" lon="13.4099">
    <time>2014-11-07T11:25:45Z</time>
</wpt>
<wpt lat="52.52258" lon="13.409930000000001">
    <time>2014-11-07T11:25:48Z</time>
</wpt>
<wpt lat="52.52254" lon="13.40999">
    <time>2014-11-07T11:25:51Z</time>
</wpt>
<wpt lat="52.52254" lon="13.40999">
    <time>2014-11-07T11:25:54Z</time>
</wpt>
<wpt lat="52.5225" lon="13.41003">
    <time>2014-11-07T11:25:57Z</time>
</wpt>
<wpt lat="52.5225" lon="13.41004">
    <time>2014-11-07T11:26:00Z</time>
</wpt>
<wpt lat="52.52249" lon="13.41006">
    <time>2014-11-07T11:26:03Z</time>
</wpt>
<wpt lat="52.52249" lon="13.41007">
    <time>2014-11-07T11:26:09Z</time>
</wpt>
<wpt lat="52.52249" lon="13.410089999999999">
    <time>2014-11-07T11:26:12Z</time>
</wpt>
<wpt lat="52.5225" lon="13.410109999999998">
    <time>2014-11-07T11:26:15Z</time>
</wpt>
<wpt lat="52.5225" lon="13.410119999999997">
    <time>2014-11-07T11:26:18Z</time>
</wpt>
<wpt lat="52.52253" lon="13.410179999999997">
    <time>2014-11-07T11:26:21Z</time>
</wpt>
<wpt lat="52.52253" lon="13.41018">
    <time>2014-11-07T11:26:24Z</time>
</wpt>
<wpt lat="52.52214" lon="13.41085">
    <time>2014-11-07T11:26:27Z</time>
</wpt>
<wpt lat="52.52194" lon="13.41118">
    <time>2014-11-07T11:26:30Z</time>
</wpt>
<wpt lat="52.52189" lon="13.41127">
    <time>2014-11-07T11:26:33Z</time>
</wpt>
<wpt lat="52.521699999999996" lon="13.41158">
    <time>2014-11-07T11:26:36Z</time>
</wpt>
<wpt lat="52.521508" lon="13.411267">
    <time>2014-11-07T11:26:39Z</time>
</wpt>

</gpx>
Milan Cermak
  • 7,476
  • 3
  • 44
  • 59
  • 4
    In case you don't want to physically record the files, I've built an alternative that can convert Google Maps Directions straight to Xcode compatible GPX files. (including time simulation and elevation). http://hardkjarni.blogspot.com/2015/11/testing-geo-location-in-ios-and-android_2.html – Sverrir Sigmundarson Nov 02 '15 at 23:13
6

Just add many nodes as child of node like this:

<?xml version="1.0"?>
<gpx version="1.1" creator="Xcode"> 
    <wpt lat="35.641043" lon="139.609592">
        <name>63.265614</name>
    </wpt>
    <wpt lat="35.641043" lon="139.609592">
        <name>63.265614</name>
    </wpt>
    <wpt lat="35.640779" lon="139.609641">
        <name>45.113590</name>
    </wpt>
    <wpt lat="35.640771" lon="139.609642">
        <name>45.052517</name>
    </wpt>
    <wpt lat="35.640770" lon="139.609680">
        <name>45.798065</name>
    </wpt>
    ...
</gpx>

I have no idea how to control the speed though.

Basuke
  • 148
  • 7
  • you can't simulate speed in the gpx file, but you can use the UI Automation instrument as described in this answer: http://stackoverflow.com/a/9439580/16104 – pinkeerach Aug 09 '12 at 15:30
  • See bernhard's answer to http://stackoverflow.com/a/9439580/16104 for a solution. – Undistraction Aug 25 '12 at 22:24