{"id":1172,"date":"2011-01-04T16:21:54","date_gmt":"2011-01-04T08:21:54","guid":{"rendered":"http:\/\/www.andreanolanusse.com\/pt\/?p=1172"},"modified":"2011-06-08T04:30:53","modified_gmt":"2011-06-07T20:30:53","slug":"usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch","status":"publish","type":"post","link":"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/","title":{"rendered":"Usando iOS MapKit e CoreLocation com Delphi Prism e MonoTouch"},"content":{"rendered":"<p>Na minha opini\u00e3o Maps (Mapas) \u00e9 um dos aplicativos mais \u00fateis no iPhone, sempre o utilizamos para nos guiar no tr\u00e2nsito, localizar algum restaurante, supermercado, posto de gasolina ou algo do g\u00eanero perto de onde estamos.\u00a0Neste\u00a0post vou\u00a0mostrar\u00a0como usar\u00a0o\u00a0MapKit\u00a0e CoreLocation\u00a0framework parte do iOS\u00a0SDK,\u00a0ambos permitem utilizar as funcionalidades relacionadas a mapas em sua aplica\u00e7\u00e3o.<\/p>\n<p>O\u00a0MapKit\u00a0fornece uma\u00a0apresenta\u00e7\u00e3o\u00a0visual\u00a0de informa\u00e7\u00f5es geogr\u00e1ficas\u00a0com\u00a0dados e imagens do Google\u00a0Maps usando o\u00a0controle\u00a0MKMapView,\u00a0o\u00a0mesmo usado no\u00a0aplicativo Maps\u00a0do iPhone.\u00a0O MapKit est\u00e1 representado no MonoTouch\u00a0atrav\u00e9s\u00a0do namespace\u00a0MonoTouch.MapKit.<\/p>\n<p>CoreLocation\u00a0funciona em v\u00e1rios dispositivos iOS\u00a0usando\u00a0uma variedade de tecnologias\u00a0para determinar a\u00a0posi\u00e7\u00e3o e com uma\u00a0b\u00fassola embutida no dispositivo consegue fornecer a\u00a0posi\u00e7\u00e3o em que o\u00a0aparelho\u00a0est\u00e1 apontando.\u00a0Usando essas informa\u00e7\u00f5es\u00a0voc\u00ea\u00a0pode\u00a0determinar\u00a0onde os usu\u00e1rios est\u00e3o\u00a0e\u00a0em que dire\u00e7\u00e3o\u00a0o seu dispositivo\u00a0est\u00e1 apontando, atrav\u00e9s das altera\u00e7\u00f5es no monitoramento voc\u00ea tem como determinar a velocidade e dist\u00e2ncia em que os usu\u00e1rios est\u00e3o se locomovendo.\u00a0O CoreLocation framework est\u00e1 representando no MonoTouch\u00a0atrav\u00e9s\u00a0do\u00a0namespace MonoTouch.CoreLocation onde trabalha com dois tipos de informa\u00e7\u00e3o: Location e Heading.<\/p>\n<p>Vou assumir que voc\u00ea j\u00e1 assistiu minha\u00a0<a href=\"http:\/\/www.andreanolanusse.com\/blogen\/video-building-net-based-applications-for-linux-and-iphone-with-mono-and-monotouch\/\" target=\"_blank\">apresenta\u00e7\u00e3o introdutoria sobre iPhone (em ingl\u00eas)<\/a> na qual eu explico como criar um simples Web browser para iPhone usando Mono IDE e Interface Builder, pois neste post vou direto a implementa\u00e7\u00e3o.<\/p>\n<p>Para usar o MKMapView voc\u00ea precisa apenas arrastar e soltar o controle no seu Window atrav\u00e9s do Interface Builder, al\u00e9m claro do controle Segmented Control que ir\u00e1 permitir a troca do tipo de vis\u00e3o do Mapa (Standard, Hybrid, Satellite).<\/p>\n<p><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/IB_Window_MKMapView.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-1173\" title=\"MKMapView\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/IB_Window_MKMapView.png\" alt=\"\" width=\"318\" height=\"502\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/IB_Window_MKMapView.png 318w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/IB_Window_MKMapView-110x175.png 110w\" sizes=\"(max-width: 318px) 100vw, 318px\" \/><\/a><\/p>\n<p>Com base no endere\u00e7o informado a aplica\u00e7\u00e3o ir\u00e1 adicionar um PIN no mapa referente ao endere\u00e7o exato, para adicionar um marcador PIN ao mapa ser\u00e1 necess\u00e1rio criar e adicionar MKAnnotations ao MKMapView. MKAnnotation \u00e9 uma classe abstrata e tem que ser implementada na sua aplica\u00e7\u00e3o como mostro no c\u00f3digo abaixo.<\/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>Agora tenho que implementar o Search Bar delegate respons\u00e1vel por gerenciar os eventos gerados, o exemplo abaixo n\u00e3o \u00e9 uma implementa\u00e7\u00e3o completa do UISearchDelegate, mas implementa o necess\u00e1rio para gerenciar as mudan\u00e7as de comportamente na hora de efetuar uma busca (search).<\/p>\n<p>O bot\u00e3o de busca (Search) obtem a latitude\/longitude utilizando o web service do Google e utilizando a classe MyAnnotation ir\u00e1 adicionar um PIN ao mapa. Lembre-se que voc\u00ea precisa obter uma chave para utilizar a API do Google Maps atrav\u00e9s do link http:\/\/code.google.com\/apis\/maps\/signup.html para usar esta aplica\u00e7\u00e3o, associe o seu Google Maps Key a vari\u00e1vel 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>Para finalizar abaixo temos a implementa\u00e7\u00e3o que busca a latitude\/longitude usando o web services do Google, temos apenas que passar o endere\u00e7o e o Google ir\u00e1 retornar a informa\u00e7\u00e3o.<\/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>Quando executamos a aplica\u00e7\u00e3o podemos visualizar o mapa de 3 formas diferentes conforme as figura abaixo, o PIN (em vermelho) est\u00e1 na posi\u00e7\u00e3o onde est\u00e1 localizado nosso escrit\u00f3rio aqui em Scotts Valley.<br \/>\n<a href=\"http:\/\/www.andreanolanusse.com\/blogen\/wp-content\/uploads\/2010\/12\/MapView_1.png\"><br \/>\n<\/a><a href=\"http:\/\/www.andreanolanusse.com\/blogen\/wp-content\/uploads\/2010\/12\/MapView_2.png\"><\/a><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_1.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1174\" title=\"MapView 1\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_1.png\" alt=\"\" width=\"242\" height=\"351\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_1.png 403w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_1-120x175.png 120w\" sizes=\"(max-width: 242px) 100vw, 242px\" \/><\/a><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1175\" title=\"MapView 2\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\" alt=\"\" width=\"242\" height=\"350\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png 403w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2-120x175.png 120w\" sizes=\"(max-width: 242px) 100vw, 242px\" \/><\/a><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\"><\/a><a href=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_3.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1176\" title=\"MapView 3\" src=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_3.png\" alt=\"\" width=\"241\" height=\"350\" srcset=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_3.png 402w, http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_3-120x175.png 120w\" sizes=\"(max-width: 241px) 100vw, 241px\" \/><\/a><\/p>\n<p>O c\u00f3digo fonte est\u00e1 dispon\u00edvel para download no\u00a0<a href=\"http:\/\/cc.embarcadero.com\/download.aspx?id=28181\">CodeCentral<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na minha opini\u00e3o Maps (Mapas) \u00e9 um dos aplicativos mais \u00fateis no iPhone, sempre o utilizamos para nos guiar no tr\u00e2nsito, localizar algum restaurante, supermercado, posto de gasolina ou algo do g\u00eanero perto de onde estamos.\u00a0Neste\u00a0post vou\u00a0mostrar\u00a0como usar\u00a0o\u00a0MapKit\u00a0e CoreLocation\u00a0framework parte do iOS\u00a0SDK,\u00a0ambos permitem utilizar as funcionalidades relacionadas a mapas em sua aplica\u00e7\u00e3o. O\u00a0MapKit\u00a0fornece uma\u00a0apresenta\u00e7\u00e3o\u00a0visual\u00a0de informa\u00e7\u00f5es [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":1175,"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":[48,65],"tags":[179],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v16.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Usando MapKit e CoreLocation com iPhone\/iOS e MonoTouch<\/title>\n<meta name=\"description\" content=\"Na minha opini\u00e3o Maps (Mapas) \u00e9 um dos aplicativos mais \u00fateis no iPhone, sempre o utilizamos para nos guiar no tr\u00e2nsito, localizar algum restaurante,\" \/>\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\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Usando MapKit e CoreLocation com iPhone\/iOS e MonoTouch\" \/>\n<meta property=\"og:description\" content=\"Na minha opini\u00e3o Maps (Mapas) \u00e9 um dos aplicativos mais \u00fateis no iPhone, sempre o utilizamos para nos guiar no tr\u00e2nsito, localizar algum restaurante,\" \/>\n<meta property=\"og:url\" content=\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/\" \/>\n<meta property=\"og:site_name\" content=\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\" \/>\n<meta property=\"article:published_time\" content=\"2011-01-04T08:21:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2011-06-07T20:30:53+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"403\" \/>\n\t<meta property=\"og:image:height\" content=\"583\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:site\" content=\"@andreanolanusse\" \/>\n<meta name=\"twitter:label1\" content=\"Est. tempo de leitura\">\n\t<meta name=\"twitter:data1\" content=\"5 minutos\">\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebSite\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"Andreano Lanusse | Tecnologia e Desenvolvimento de Software\",\"description\":\"Andreano Lanusse blog - artigos, tutoriais e v&iacute;deos sobre tecnologia, desenvolvimento de software (Delphi XE4, C#, PHP, .NET) e t&eacute;cnicas de programa&ccedil;&atilde;o\",\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":\"http:\/\/www.andreanolanusse.com\/pt\/?s={search_term_string}\",\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#primaryimage\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\",\"contentUrl\":\"http:\/\/www.andreanolanusse.com\/pt\/wp-content\/uploads\/2011\/01\/MapView_2.png\",\"width\":403,\"height\":583},{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#webpage\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/\",\"name\":\"Usando MapKit e CoreLocation com iPhone\/iOS e MonoTouch\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#website\"},\"primaryImageOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#primaryimage\"},\"datePublished\":\"2011-01-04T08:21:54+00:00\",\"dateModified\":\"2011-06-07T20:30:53+00:00\",\"description\":\"Na minha opini\\u00e3o Maps (Mapas) \\u00e9 um dos aplicativos mais \\u00fateis no iPhone, sempre o utilizamos para nos guiar no tr\\u00e2nsito, localizar algum restaurante,\",\"breadcrumb\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"item\":{\"@type\":\"WebPage\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"url\":\"http:\/\/www.andreanolanusse.com\/pt\/\",\"name\":\"In\\u00edcio\"}},{\"@type\":\"ListItem\",\"position\":2,\"item\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#webpage\"}}]},{\"@type\":\"Article\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#article\",\"isPartOf\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#webpage\"},\"author\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"headline\":\"Usando iOS MapKit e CoreLocation com Delphi Prism e MonoTouch\",\"datePublished\":\"2011-01-04T08:21:54+00:00\",\"dateModified\":\"2011-06-07T20:30:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#webpage\"},\"commentCount\":1,\"publisher\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\"},\"image\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#primaryimage\"},\"keywords\":[\"iOS\"],\"articleSection\":[\"Delphi Prism (.NET)\",\"iOS\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"http:\/\/www.andreanolanusse.com\/pt\/usando-ios-mapkit-e-corelocation-com-delphi-prism-e-monotouch\/#respond\"]}]},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#\/schema\/person\/620bd05e81598c3aba4781796cbe8903\",\"name\":\"Andreano Lanusse\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\",\"inLanguage\":\"pt-BR\",\"url\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"contentUrl\":\"http:\/\/0.gravatar.com\/avatar\/6a9c6f73c7c480fb826c7303288abfd3?s=96&d=mm&r=g\",\"caption\":\"Andreano Lanusse\"},\"logo\":{\"@id\":\"http:\/\/www.andreanolanusse.com\/pt\/#personlogo\"},\"sameAs\":[\"https:\/\/twitter.com\/andreanolanusse\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","_links":{"self":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1172"}],"collection":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/comments?post=1172"}],"version-history":[{"count":0,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/posts\/1172\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media\/1175"}],"wp:attachment":[{"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/media?parent=1172"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/categories?post=1172"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.andreanolanusse.com\/pt\/wp-json\/wp\/v2\/tags?post=1172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}