{"id":418,"date":"2010-12-27T14:40:05","date_gmt":"2010-12-27T22:40:05","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/en\/?p=418"},"modified":"2011-02-02T02:15:38","modified_gmt":"2011-02-02T10:15:38","slug":"using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/","title":{"rendered":"Using iOS MapKit and CoreLocation with Delphi Prism and MonoTouch"},"content":{"rendered":"<p>The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a restaurant, gas station, etc. In this post I will show how to use the MapKit and CoreLocation framework from iOS SDK, both enable mapping related functionality within you application.<\/p>\n<p>The MapKit provide a visual presentation of geographic information using Google Maps data and image, using the MKMapView control, the same use in the iPhone Maps app.\u00a0The MapKit framework is exposed on MonoTouch via the MonoTouch.MapKit namespace.<\/p>\n<p>CoreLocation works on a number of iOS devices using a variety of technologies to determine position, and using a built-in compass of newer devices provides the heading the device is pointing to. Using this information you can determine where users are and what direction their device is facing, and by monitoring changes to that data how fast they are moving and how far they have traveled. The CoreLocation framework is exposed on MonoTouch via the MonoTouch.CoreLocation namespace, and deal with two types of information: Location and Heading.<\/p>\n<p>I&#8217;m assuming you already watch my <a href=\"http:\/\/www.andreanolanusse.com\/en\/video-building-net-based-applications-for-linux-and-iphone-with-mono-and-monotouch\/\" target=\"_blank\">introductory presentation about iPhone<\/a> which I explain how to create a simple Web browser using Mono IDE and Interface Builder, on this post I will just go through the implementation.<\/p>\n<p>In order to use MKMapView you just need to drag and drop the control in your window using Interface Builder, also the Segmented Control which will allow you to change the Map type (Standard, Hybrid, Satellite).<\/p>\n<p><a href=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/IB_Window_MKMapView.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-429\" title=\"Interface Builder MKMapView\" src=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/IB_Window_MKMapView.png\" alt=\"\" width=\"318\" height=\"502\" srcset=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/IB_Window_MKMapView.png 318w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/IB_Window_MKMapView-190x300.png 190w\" sizes=\"auto, (max-width: 318px) 100vw, 318px\" \/><\/a><\/p>\n<p>Based on the address informed I will add a PIN on the correspondent location, to do add PIN markers to the map requires creating and adding MKAnnotations to the MKMapView. MKAnnotation is a abstract class and need to be implemented in your application, like the code bellow.<\/p>\n<pre class=\"brush: delphi\">\t  MyAnnotation nested in AppDelegate = public class(MKAnnotation)\r\n\t  private\r\n\t    _coordinate: CLLocationCoordinate2D;\r\n\t    _title: System.String;\r\n\t    _subtitle: System.String;\r\n\t  public\r\n\t    property Coordinate : CLLocationCoordinate2D read _coordinate write _coordinate;override;\r\n\t    property Title: System.String read _title; override;\r\n\t    property Subtitle: System.String read _subtitle; override;\r\n     \t    \/\/ The custom constructor is required to pass the values to this class,\r\n\t    \/\/ because in the MKAnnotation base the properties are read-only\r\n\t    constructor (l: CLLocationCoordinate2D; t: System.String; s: System.String);\r\n\r\n\t  end;<\/pre>\n<p>Now I had to implement the Search Bar delegate to handle events that it generates, it&#8217;s not a full implementation of the UISearchDelegate but it implement what is necessary to implement the search behavior.<\/p>\n<p>The Search button will retrieve the latitude\/longitude from Google&#8217;s web service and add a pin to the map using the MyAnnotation class. Remember you need to sign up a Google Maps key at http:\/\/code.google.com\/apis\/maps\/signup.html to use this application, assigned the Google Maps Key to the variable GoogleMapsKey.<\/p>\n<pre class=\"brush: delphi\">\t  MySearchBarDelegate nested in AppDelegate = public class(UISearchBarDelegate)\r\n\t  private\r\n\t    app: AppDelegate;\r\n\t    lastResult: MyAnnotation;\r\n\t    GoogleMapsKey:String := String.Empty; \/\/ Define you google maps key here.\r\n            \/\/ Keep a reference to the application so we can access the UIControls.\r\n\t   \/\/ This needs to be an internal class to access those (private) controls.\r\n\t  public\r\n\t    constructor (a: AppDelegate);\r\n\t\t\/\/ Method for the searchbar to call when the user wants to search,\r\n\t\t\/\/ where we create and call the Geocoder class. Note that we are\r\n\t\t\/\/ calling it synchronously which is undesirable in a \"real\"\r\n\t\t\/\/ application.\r\n\t    method SearchButtonClicked(searchBar: UISearchBar); override;\r\n\t  end;\r\n\r\nmethod AppDelegate.MySearchBarDelegate.SearchButtonClicked(searchBar: UISearchBar);\r\nbegin\r\n\r\n  var g := new Geocoder(GoogleMapsKey);\r\n  var location: CLLocationCoordinate2D;\r\n  searchBar.ResignFirstResponder;\r\n  UIApplication.SharedApplication.NetworkActivityIndicatorVisible := true;\r\n\r\n  \/\/ synchronous webservice call\r\n  if g.Locate(searchBar.Text, out location) then begin\r\n    if lastResult &lt;&gt; nil then\r\n    begin\r\n      \/\/ if there is already a pin on the map, remove it\r\n      app.Map.RemoveAnnotation(lastResult)\r\n    end;\r\n\r\n    app.Map.SetCenterCoordinate(location, true);\r\n    var pin := new MyAnnotation(location, searchBar.Text, location.Latitude.ToString + ',' + location.Longitude.ToString);\r\n    app.Map.AddAnnotationObject(pin);\r\n    lastResult := pin;\r\n  end\r\n  else\r\n  begin\r\n    \/\/ display a message that the webservice call didn't work\r\n    using alert := new UIAlertView('Not found', 'No match found for ' + searchBar.Text, nil, 'OK', nil) do\r\n    begin\r\n      alert.Show()\r\n    end\r\n  end;\r\n  UIApplication.SharedApplication.NetworkActivityIndicatorVisible := false;\r\nend;<\/pre>\n<p>To finalized here the implementation of the Geo code using Google web services, just passing the address and Google will retrieve the latitude\/longitude.<\/p>\n<pre class=\"brush: delphi\">interface\r\n\r\nuses\r\n  System,\r\n  System.Xml,\r\n  System.IO,\r\n  System.Net,\r\n  MonoTouch.CoreLocation;\r\n\r\n\/\/ Documentation for the service http:\/\/code.google.com\/apis\/maps\/documentation\/geocoding\/\r\ntype\r\n  Geocoder = public class\r\n  public\r\n    constructor (key: System.String);\r\n    \/\/ Sign up for a Google Maps key http:\/\/code.google.com\/apis\/maps\/signup.html\r\n  private\r\n    var _GoogleMapsKey: System.String;\r\n    var xmlString: System.String := '';\r\n  public\r\n    method Locate(query: System.String; out return: CLLocationCoordinate2D): System.Boolean;\r\n  private\r\n    \/\/ Retrieve a Url via WebClient\r\n    class method GetUrl(url: System.String): System.String;\r\n  end;\r\n\r\nimplementation\r\n\r\nconstructor Geocoder(key: System.String);\r\nbegin\r\n  _GoogleMapsKey := key;\r\nend;\r\n\r\nmethod Geocoder.Locate(query: System.String; out return: CLLocationCoordinate2D): System.Boolean;\r\nvar\r\n  url: System.String := 'http:\/\/maps.google.com\/maps\/geo?q={0}&amp;output=xml&amp;key=' + _GoogleMapsKey;\r\n  coords: XmlNode := nil;\r\n  xd: XmlDocument;\r\n  xnm: XmlNamespaceManager;\r\n  gl: System.String;\r\n  coordinateArray: array of System.String;\r\nbegin\r\n\r\n  url := String.Format(url, query);\r\n  return := new CLLocationCoordinate2D(0, 0);\r\n\r\n  try\r\n    xmlString := GetUrl(url);\r\n    xd := new XmlDocument();\r\n    xd.LoadXml(xmlString);\r\n    xnm := new XmlNamespaceManager(xd.NameTable);\r\n    coords := xd.GetElementsByTagName('coordinates')[0]\r\n  except \r\n\r\n  end;\r\n\r\n  if coords &lt;&gt; nil then begin\r\n     coordinateArray := coords.InnerText.Split(',');\r\n\r\n     if coordinateArray.Length &gt;= 2 then begin\r\n        gl := Convert.ToDouble(coordinateArray[1].ToString()).ToString + ',' + Convert.ToDouble(coordinateArray[0].ToString());\r\n\r\n      return := new CLLocationCoordinate2D(Convert.ToDouble(coordinateArray[1].ToString()),\r\n                                            Convert.ToDouble(coordinateArray[0].ToString()));\r\n      exit true\r\n     end\r\n  end;\r\n\r\n  exit false\r\nend;\r\n\r\nclass method Geocoder.GetUrl(url: System.String): System.String;\r\nvar\r\n  return: System.String := System.String.Empty;\r\n  client: System.Net.WebClient := new WebClient();\r\nbegin\r\n\r\n  using strm: Stream := client.OpenRead(url) do\r\n  begin\r\n    var sr: StreamReader := new StreamReader(strm);\r\n    return := sr.ReadToEnd()\r\n  end;\r\n\r\n  exit return;\r\nend;\r\n\r\nend.<\/pre>\n<p>When we run the application we can have three different views of the Map, the pin (in red) is the location of our office here in Scotts Valley.<br \/>\n<a href=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-430\" title=\"MapView 1\" src=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_1.png\" alt=\"\" width=\"169\" height=\"246\" srcset=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_1.png 403w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_1-207x300.png 207w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_1-206x300.png 206w\" sizes=\"auto, (max-width: 169px) 100vw, 169px\" \/><\/a><a href=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-full wp-image-433\" title=\"MapView 2\" src=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\" alt=\"\" width=\"169\" height=\"245\" srcset=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png 403w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2-207x300.png 207w\" sizes=\"auto, (max-width: 169px) 100vw, 169px\" \/><\/a><a href=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-432 alignnone\" title=\"MapView 3\" src=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_3.png\" alt=\"\" width=\"169\" height=\"245\" srcset=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_3.png 402w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_3-207x300.png 207w, http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_3-206x300.png 206w\" sizes=\"auto, (max-width: 169px) 100vw, 169px\" \/><\/a><\/p>\n<p>The source code is available at <a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=28181\">CodeCentral<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a restaurant, gas station, etc. In this post I will show how to use the MapKit and CoreLocation framework from iOS SDK, both enable mapping related functionality within [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":433,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_s2mail":"","footnotes":""},"categories":[29,33],"tags":[62,39],"class_list":["post-418","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-delphi-prism-net","category-iphone-technology","tag-delphi-prism","tag-monotouch"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch<\/title>\n<meta name=\"description\" content=\"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch\" \/>\n<meta property=\"og:description\" content=\"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Technology and Software Development\" \/>\n<meta property=\"article:published_time\" content=\"2010-12-27T22:40:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-02-02T10:15:38+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"403\" \/>\n\t<meta property=\"og:image:height\" content=\"583\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Andreano Lanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andreano Lanusse\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\"},\"author\":{\"name\":\"Andreano Lanusse\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"headline\":\"Using iOS MapKit and CoreLocation with Delphi Prism and MonoTouch\",\"datePublished\":\"2010-12-27T22:40:05+00:00\",\"dateModified\":\"2011-02-02T10:15:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\"},\"wordCount\":464,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\",\"keywords\":[\"Delphi Prism\",\"MonoTouch\"],\"articleSection\":[\"Delphi Prism (.NET)\",\"iPhone\"],\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\",\"name\":\"Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch\",\"isPartOf\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\",\"datePublished\":\"2010-12-27T22:40:05+00:00\",\"dateModified\":\"2011-02-02T10:15:38+00:00\",\"description\":\"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#breadcrumb\"},\"inLanguage\":\"en\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage\",\"url\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png\",\"width\":403,\"height\":583},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.andreanolanusse.com\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using iOS MapKit and CoreLocation with Delphi Prism and MonoTouch\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#website\",\"url\":\"https:\/\/www.andreanolanusse.com\/en\/\",\"name\":\"Andreano Lanusse | Technology and Software Development\",\"description\":\"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos\",\"publisher\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en\",\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/\"},\"description\":\"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.\",\"sameAs\":[\"http:\/\/www.andreanolanusse.com\",\"https:\/\/x.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch","description":"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/","og_locale":"en_US","og_type":"article","og_title":"Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch","og_description":"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a","og_url":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/","og_site_name":"Andreano Lanusse | Technology and Software Development","article_published_time":"2010-12-27T22:40:05+00:00","article_modified_time":"2011-02-02T10:15:38+00:00","og_image":[{"width":403,"height":583,"url":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png","type":"image\/png"}],"author":"Andreano Lanusse","twitter_misc":{"Written by":"Andreano Lanusse","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#article","isPartOf":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/"},"author":{"name":"Andreano Lanusse","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"headline":"Using iOS MapKit and CoreLocation with Delphi Prism and MonoTouch","datePublished":"2010-12-27T22:40:05+00:00","dateModified":"2011-02-02T10:15:38+00:00","mainEntityOfPage":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/"},"wordCount":464,"commentCount":7,"publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"image":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage"},"thumbnailUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png","keywords":["Delphi Prism","MonoTouch"],"articleSection":["Delphi Prism (.NET)","iPhone"],"inLanguage":"en","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#respond"]}]},{"@type":"WebPage","@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/","url":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/","name":"Using MapKit and CoreLocation on iOS\/iPhone with MonoTouch","isPartOf":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#website"},"primaryImageOfPage":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage"},"image":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage"},"thumbnailUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png","datePublished":"2010-12-27T22:40:05+00:00","dateModified":"2011-02-02T10:15:38+00:00","description":"The iPhone Maps application is one of the most useful app for me, we always used this app to track a direction, check the traffic, search for a","breadcrumb":{"@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#breadcrumb"},"inLanguage":"en","potentialAction":[{"@type":"ReadAction","target":["http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/"]}]},{"@type":"ImageObject","inLanguage":"en","@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#primaryimage","url":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png","contentUrl":"http:\/\/www.andreanolanusse.com\/en\/wp-content\/uploads\/2010\/12\/MapView_2.png","width":403,"height":583},{"@type":"BreadcrumbList","@id":"http:\/\/www.andreanolanusse.com\/en\/using-ios-mapkit-and-corelocation-with-delphi-prism-and-monotouch\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.andreanolanusse.com\/en\/"},{"@type":"ListItem","position":2,"name":"Using iOS MapKit and CoreLocation with Delphi Prism and MonoTouch"}]},{"@type":"WebSite","@id":"https:\/\/www.andreanolanusse.com\/en\/#website","url":"https:\/\/www.andreanolanusse.com\/en\/","name":"Andreano Lanusse | Technology and Software Development","description":"Where Andreano Lanusse talk about technology, software development, programming techniques, databases, games and more through articles, tutorials and videos","publisher":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.andreanolanusse.com\/en\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en"},{"@type":["Person","Organization"],"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/b51fdf99c01fcd6ae0a5ae894c23837b","name":"Andreano Lanusse","image":{"@type":"ImageObject","inLanguage":"en","@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/49ab23ef70c249c0cb3469f14ef07edc?s=96&d=mm&r=g","caption":"Andreano Lanusse"},"logo":{"@id":"https:\/\/www.andreanolanusse.com\/en\/#\/schema\/person\/image\/"},"description":"Andreano Lanusse is an expert and enthusiastic on software development industry, at Embarcadero he is focused on helping to make sure the products being developed meet the expectations of Embarcadero's customers, as well as defining market strategies for Latin America. Today as Latin Lead Evangelist he spends great deal of time in developer conferences, tradeshows, user group, and visiting customers throughout Latin America. Before Embarcadero, he worked 13 years for Borland, Andreano has worked as Support Coordinator, Engineer, Product Manager, including Product Line Sales Manager, where was responsible to manage the relationship with Brazil developer community, also has worked as Principal Consultant for Borland Consulting Services on the development and management of critical applications. He previously served as Chief Architect for USS Solu\u00e7\u00f5es Gerenciadas (now USS Tempo). Andreano holds a bachelor's degree in Business Administration Marketing Emphasis from Sumare Institute, MBA in Project Management from FGV, certification in Microsoft products, all Borland ALM products, and all CodeGear product line.","sameAs":["http:\/\/www.andreanolanusse.com","https:\/\/x.com\/andreanolanusse"]}]}},"_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/comments?post=418"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/posts\/418\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/media\/433"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/media?parent=418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/categories?post=418"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/en\/wp-json\/wp\/v2\/tags?post=418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}