Channels ▼


MonoTouch and the iPhone: The GPS and Compass Functions

A Sample Application

Let's create a MonoTouch application that uses the CoreLocation API. (The complete source code and related files for this application are available here).

First, open up MonoTouch, it should look something like Figure 1.

[Click image to view at full size]
Figure 1

Next, create a new iPhone MonoTouch project. To do this, select "File : New Solution":

[Click image to view at full size]
Figure 2

Choose "iPhone MonoTouch Project" from the C# templates and let's name our solution "Example_CoreLocation":

[Click image to view at full size]
Figure 3

Click "OK" on the Project Features dialogue, as they're not relevant to what we're doing:

[Click image to view at full size]
Figure 4

Our project should now look something like this:

[Click image to view at full size]
Figure 5

Open the MainWindow.xib file in Interface Builder by double-clicking on it in the Solution Explorer window, you should get something that looks like this:

[Click image to view at full size]
Figure 6

Drag some UILabels over to the Window designer and then double-click them to edit their initial text, until you have something that looks like Figure 7:

Figure 7

In the Attributes tab of the Inspector, you can adjust the font and appearance of your labels if you want:

Figure 8

Next, we need to add Outlets to our AppDelegate class for each of the labels that we'll write to. When you add elements to your document in Interface Builder, they're not available to your code until you add Outlets.

In our case, for the simplicity of our example, all our code is going to go into the AppDelegate class, so we need to add outlets to it, so our labels are available to it.

To do this, select the Classes Tab in the top of the Library Window, and then select the AppDelegate class.

Figure 9

Make sure the AppDelegate class is selected, otherwise your Outlets will get created somewhere else and you'll get build errors when you try to access them.

Next, we're going to add the Outlets by selecting the "Outlets" tab in the lower half of the window and clicking the "+" button. When you click the "+" a new outlet is created and it allows you to edit the name of the Outlet. Let's add the following outlets:

  • txtAltitude
  • txtLatitude
  • txtLongitude
  • txtCourse
  • txtSpeed
  • txtMagneticHeading
  • txtTrueHeading

Your Outlets should now look like Figure 10.

Figure 10

Related Reading

More Insights

Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.