{"id":2516,"date":"2017-01-30T20:09:53","date_gmt":"2017-01-30T20:09:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2516"},"modified":"2025-06-13T20:15:24","modified_gmt":"2025-06-14T03:15:24","slug":"getting-started-with-geojson-couchbase-net-and-google-maps","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/getting-started-with-geojson-couchbase-net-and-google-maps\/","title":{"rendered":"Primeros pasos con GeoJSON, Couchbase, .NET y Google Maps"},"content":{"rendered":"<div class=\"paragraph\">\n<p><em>Este es un art\u00edculo escrito por Calvin Allen. Calvin es un desarrollador .NET en Columbus, OH que disfruta dise\u00f1ando software que no s\u00f3lo resuelve problemas de negocio, sino que es f\u00e1cil de usar, dentro del presupuesto y a tiempo. Si no est\u00c3\u00a1 dise\u00c3\u00b1ando software, est\u00c3\u00a1 aprendiendo c\u00c3\u00b3mo ser un mejor desarrollador de software. Esto no es s\u00f3lo una carrera para \u00e9l - es tambi\u00e9n un estilo de vida.<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p><em>Sigue el post de Calvin en <a href=\"https:\/\/github.com\/CalvinAllen\/geojson-with-couchbase-and-dotnet\">consultar el c\u00f3digo fuente y GitHub<\/a> y <a href=\"https:\/\/www.couchbase.com\/blog\/es\/download\/?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">descargando la \u00faltima versi\u00f3n preliminar para desarrolladores de Couchbase<\/a>.<\/em><\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>\u00bfQu\u00e9 es GeoJSON? <a href=\"https:\/\/geojson.org\/\">GeoJSON.org<\/a> lo define como:<br \/>\n\"GeoJSON es un formato para codificar una variedad de estructuras de datos geogr\u00e1ficos\"<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Pero, \u00bfqu\u00e9 significa realmente? B\u00e1sicamente, se trata de un formato est\u00e1ndar que utiliza la estructura JSON para definir objetos geogr\u00e1ficos. Estos \"objetos geogr\u00e1ficos\" pueden ser varios, desde un simple \"punto\" hasta un objeto m\u00e1s complejo, como un \"pol\u00edgono\".<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>He aqu\u00ed un sencillo ejemplo de \"punto en el mapa\" para las \"Islas Dinagat\":<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-JavaScript\">{\r\n  \"type\": \"FeatureCollection\",\r\n  \"features\": [\r\n    {\r\n      \"type\": \"Feature\",\r\n      \"geometry\": {\r\n        \"type\": \"Point\",\r\n        \"coordinates\": [\r\n          125.6,\r\n          10.1\r\n        ]\r\n      },\r\n      \"properties\": { }\r\n    }\r\n  ]\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Ahora que ya conoces todos los antecedentes, te estar\u00e1s preguntando: \"\u00bfPor qu\u00e9 necesito GeoJSON?\". La respuesta sencilla es que se trata de un est\u00e1ndar actualmente admitido en diversas tecnolog\u00edas cartogr\u00e1ficas, como Google Maps. Con tus datos ya en formato GeoJSON, puedes proporcionar esos datos <strong>directamente<\/strong> a Google Maps, y renderiza tu objeto como se describe. No s\u00f3lo te ahorra tener que \"rodar tu propio\" formato, sino que otros proveedores ya lo soportan, lo que puedes aprovechar como desees.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Manos a la obra.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Voy a demostrar el formato GeoJSON utilizando una aplicaci\u00f3n .NET MVC, Couchbase (Community) Server (y el SDK .NET), y Google Maps - voy a tener que asumir que tienes alg\u00fan conocimiento pr\u00e1ctico de todas estas utilidades.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>No voy a entrar en detalles sobre c\u00f3mo crear el proyecto MVC, o la instalaci\u00f3n \/ configuraci\u00f3n de Couchbase, ya que hay un mont\u00f3n de otros tutoriales \/ art\u00edculos por ah\u00ed que describen c\u00f3mo lograr estos elementos, especialmente en <a href=\"https:\/\/www.couchbase.com\/blog\/es\/facet\/Author\/Matthew+Groves\/\">Matthew Groves Blog de Couchbase<\/a>.<br \/>\nUna cosa que mencionar\u00e9 ahora, es que he llamado al bucket de Couchbase \"features\", y lo he precargado (todo a trav\u00e9s de la Consola de Couchbase) con dos documentos - uno para un pol\u00edgono alrededor de Roma, y otro con un punto sobre las Islas Dinagat (como se ve arriba). Ambos archivos json se pueden encontrar en el repositorio de github al que enlazar\u00e9 m\u00e1s adelante en el art\u00edculo.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Con el nuevo sitio web MVC cargado en Visual Studio, abre la consola del gestor de paquetes NuGet y escribe el siguiente comando para cargar el SDK .NET de Couchbase:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>Install-Package couchbasenetclient<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Una vez que el SDK .NET de Couchbase haya terminado de instalarse, ejecute el siguiente comando para instalar la biblioteca geojson:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre>Install-Package geojson.net<\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>El primer paquete, \"couchbasenetclient\", se utilizar\u00e1 para comunicarnos con nuestro servidor local Couchbase para gestionar nuestros documentos GeoJSON. Se trata de una librer\u00eda creada \/ soportada por el equipo de Couchbase. La siguiente, \"geojson.net\", es una librer\u00eda de ayuda para crear \/ leer documentos GeoJSON. Bajo el cap\u00f3, la biblioteca geojson.net utiliza JSON.Net para la serializaci\u00f3n \/ deserializaci\u00f3n json de los tipos .NET que la biblioteca nos proporciona. Podr\u00edas prescindir de este paquete\/biblioteca y gestionar los tipos t\u00fa mismo, pero para simplificar las cosas, he decidido utilizarlo.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Lo primero que tenemos que hacer es cablear nuestro controlador. Voy a reutilizar el \"HomeController\" que ya existe en el proyecto.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>En primer lugar, voy a a\u00f1adir un constructor, que vamos a utilizar para almacenar nuestro cubo:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public class HomeController : Controller {\r\n\r\n    private readonly IBucket _bucket;\r\n\r\n    public HomeController() {\r\n        _bucket = ClusterHelper.GetBucket(\"features\");\r\n    }\r\n\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Ahora, voy a necesitar tres puntos finales -<\/p>\n<\/div>\n<div class=\"olist arabic\">\n<ol class=\"arabic\">\n<li>Uno para obtener una lista de todas las caracter\u00edsticas<\/li>\n<li>Uno que actuar\u00e1 como un simple enrutamiento a la p\u00e1gina del mapa (ver\u00e1s a lo que me refiero)<\/li>\n<li>Y, por \u00faltimo, una a la que la API de Google Maps realizar\u00e1 una llamada directa para obtener el JSON de la funci\u00f3n.<\/li>\n<\/ol>\n<\/div>\n<div class=\"paragraph\">\n<p>Aqu\u00ed est\u00e1n los tres:<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Primero - es la acci\u00f3n que devuelve la lista completa de caracter\u00edsticas en mi cubo Couchbase. Se trata de una simple consulta N1QL para obtener los ID de las caracter\u00edsticas como una lista de cadenas. (S\u00f3lo me importa el ID de la caracter\u00edstica en la p\u00e1gina de la lista)<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public ActionResult Features() {\r\n\tvar request = QueryRequest.Create(\"SELECT META().id as `id` FROM `features` as f\");\r\n\r\n\trequest.ScanConsistency(ScanConsistency.RequestPlus);\r\n\r\n\tvar featureIds = _bucket\r\n\t\t\t.Query&lt;dynamic&gt;(request)\r\n\t\t\t.Rows\r\n\t\t\t.Select(x =&gt; x.id.ToString())\r\n\t\t\t.ToList();\r\n\r\n\treturn View(featureIds);\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Este es el m\u00e9todo de enrutamiento simple que utilizo mientras navego desde la p\u00e1gina de la lista para mantener el ID de la caracter\u00edstica solicitada en la que el usuario hizo clic.<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public ActionResult MapFeature(string id) {\r\n    ViewBag.FeatureId = id;\r\n    return View();\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Y, por \u00faltimo, este m\u00e9todo se llama a trav\u00e9s de la API de Google Maps en la p\u00e1gina MapFeature para obtener el JSON de la caracter\u00edstica que el usuario desea mapear (de nuevo, utilizando el objeto FeatureCollection de la biblioteca geojson.net - esto utiliza Json.Net para serializar ese objeto, que viene con sus propios serializadores en la biblioteca tambi\u00e9n).<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">public ContentResult GetFeatureJson(string id) {\r\n    var feature = _bucket.Get&lt;FeatureCollection&gt;(id).Value;\r\n\tvar json = JsonConvert.SerializeObject(feature);\r\n\r\n\treturn Content(json, \"application\/json\");\r\n}<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Pasemos ahora a las p\u00e1ginas de visualizaci\u00f3n propiamente dichas (s\u00f3lo hay dos)<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>En la p\u00e1gina \"Caracter\u00edsticas\", que no es m\u00e1s que un listado de las caracter\u00edsticas de nuestro bucket de Couchbase, simplemente mostramos cada uno de los ID de las caracter\u00edsticas en un enlace de acci\u00f3n dentro de una lista desordenada:<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">@model List&lt;string&gt;\r\n\r\n&lt;h2&gt;Caracter&iacute;sticas&lt;\/h2&gt;\r\n\r\n&lt;ul&gt;\r\n\t@foreach (var feature in Model) {\r\n\t\t&lt;li&gt;@Html.ActionLink(feature, &quot;MapFeature&quot;, &quot;Home&quot;, new { id = feature }, null)&lt;\/li&gt;\r\n\t}\r\n&lt;\/ul&gt;<\/code><\/pre>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>La \u00faltima p\u00e1gina, MapFeature, es la que hace el \"trabajo pesado\":<\/p>\n<\/div>\n<div class=\"listingblock\">\n<div class=\"content\">\n<pre class=\"highlight decode:true\"><code class=\"language-C#\">&lt;h2&gt;Map Feature&lt;\/h2&gt;\r\n@{\r\n\tvar id = ViewBag.FeatureId;\r\n}\r\n\r\n<\/code><\/pre>\n<div id=\"map_wrap\"><code class=\"language-C#\"><code class=\"language-C#\"><\/code><\/code><\/p>\n<div id=\"map\" style=\"width: 100%;height: 100%\"><\/div>\n<p><code class=\"language-C#\"><br \/>\n<\/div><\/p>\n<p>\t$(function () {<br \/>\n\t\tvar map = new google.maps.Map(document.getElementById('map'), {<br \/>\n\t\t\tzoom: 6<br \/>\n\t\t});<\/p>\n<p>\t\tmap.data.loadGeoJson('\/Home\/GetFeatureJson\/@id');<\/p>\n<p>\t\t\/\/la llamada de retorno para cada una de las caracter\u00edsticas en el bucle - la \u00faltima gana<br \/>\n\t\tfunction forEachGeometry(feature) {<br \/>\n\t\t\tfeature.getGeometry().forEachLatLng(resetCenter);<br \/>\n\t\t};<\/p>\n<p>\t\t\/\/toma la Latituta y la Longitud de cada Geometr\u00eda y restablece el punto central en el mapa - el \u00faltimo gana - totalmente ineficiente<br \/>\n\t\tfunction resetCenter(latLng) {<br \/>\n\t\t\tmap.setCenter(latLng);<br \/>\n\t\t};<\/p>\n<p>\t\t\/\/cada vez que se a\u00f1ada una caracter\u00edstica al mapa, repasa la colecci\u00f3n - completamente ineficiente, pero deber\u00eda proporcionar una idea<br \/>\n\t\tmap.data.addListener('addfeature', function (e) {<br \/>\n\t\t\tmap.data.forEach(forEachGeometry);<br \/>\n\t\t});<\/p>\n<p>\t});<\/p>\n<p><a href=\"https:\/\/maps.googleapis.com\/maps\/api\/js?key=YOUR_API_KEY\">https:\/\/maps.googleapis.com\/maps\/api\/js?key=YOUR_API_KEY<\/a><\/code><\/div>\n<\/div>\n<\/div>\n<div class=\"paragraph\">\n<p>Cuando se carga esta p\u00e1gina, obtenemos el ID de la funci\u00f3n en la que ha hecho clic el usuario (almacenado en ViewBag) y, a continuaci\u00f3n, pasamos directamente a nuestro marcado HTML. Te dar\u00e1s cuenta de los dos divs, que son marcadores de posici\u00f3n (especialmente el interior), que la API de Google Maps utilizar\u00e1 para mostrar el mapa \/ caracter\u00edsticas.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Luego nos metemos en el Javascript - la mayor parte de esto es bastante b\u00e1sico, y <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/\">directamente de los documentos que proporciona Google<\/a>...excepto por los pocos m\u00e9todos que agregu\u00e9, que veremos.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Lo primero que hacemos es 'new up' nuestro objeto mapa, y le decimos qu\u00e9 elemento DOM utilizar, y cu\u00e1l ser\u00e1 el nivel de zoom por defecto. A continuaci\u00f3n, puedes ver que estamos utilizando un m\u00e9todo incorporado de Google Maps, loadGeoJson, que toma nuestra URL local para agarrar el JSON de nuestro cubo Couchbase.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Los siguientes m\u00e9todos son r\u00e1pidas bolt-on que he a\u00f1adido por el bien de la demo, que no est\u00e1n destinados a ser utilizados en un entorno de producci\u00f3n, ya que son muy ineficientes. Restablecen el centro del mapa al \u00faltimo objeto Latitud\/Longitud que encontramos en los datos que cargamos en el mapa. No es una l\u00f3gica precisa, pero \"centrar\u00e1\" el mapa sobre cualquier caracter\u00edstica que estemos renderizando.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Lo \u00faltimo que hacemos es cargar la API de Google Maps desde su CDN.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Este es un ejemplo muy simple de almacenar\/consultar datos GeoJSON desde una instancia de Couchbase, y cargarlos en un producto de mapas. Y, aunque he elegido Google Maps, otros proveedores, como MapBox, tambi\u00e9n soportan GeoJSON.<\/p>\n<\/div>\n<div class=\"paragraph\">\n<p>Y, por \u00faltimo, si necesita ver el ejemplo en su totalidad, <a href=\"https:\/\/github.com\/CalvinAllen\/geojson-with-couchbase-and-dotnet\">consulta el c\u00f3digo en github<\/a>. Simplemente tendr\u00e1s que modificar la p\u00e1gina MapFeature.cshtml para incluir tu propia clave de API de Google Maps (visita <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/\"> https:\/\/developers.google.com\/maps\/documentation\/javascript\/<\/a>Inicia sesi\u00f3n con tu cuenta de Google y haz clic en el bot\u00f3n \"Obtener una clave\" de la parte superior derecha. No dudes en escribirme si tienes m\u00e1s preguntas: estoy en Twitter como <a href=\"https:\/\/twitter.com\/CalvinAllen_\">CalvinAllen_<\/a>o visite mi blog personal en <a href=\"https:\/\/www.calvinallen.net\/\">https:\/\/www.calvinallen.net<\/a>.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>This is a guest post by Calvin Allen. Calvin is a .NET developer in Columbus, OH that enjoys designing software that not only solves business problems, but it easy to use, on budget, and on time. If he isn\u2019t designing [&hellip;]<\/p>","protected":false},"author":71,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1811,10126,1816,9327],"tags":[1803,1543],"ppma_author":[8937],"class_list":["post-2516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-asp-dotnet","category-couchbase-server","category-javascript","tag-google-maps","tag-javascript"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>GeoJSON, Couchbase, .NET &amp; Google Maps - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &amp;loading it into a mapping product.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/getting-started-with-geojson-couchbase-net-and-google-maps\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps\" \/>\n<meta property=\"og:description\" content=\"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &amp;loading it into a mapping product.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/getting-started-with-geojson-couchbase-net-and-google-maps\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-30T20:09:53+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:15:24+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps\",\"datePublished\":\"2017-01-30T20:09:53+00:00\",\"dateModified\":\"2025-06-14T03:15:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/\"},\"wordCount\":1203,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Google Maps\",\"javascript\"],\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\",\"JavaScript\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/\",\"name\":\"GeoJSON, Couchbase, .NET & Google Maps - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-30T20:09:53+00:00\",\"dateModified\":\"2025-06-14T03:15:24+00:00\",\"description\":\"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &loading it into a mapping product.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\/\/crosscuttingconcerns.com\",\"https:\/\/x.com\/mgroves\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GeoJSON, Couchbase, .NET & Google Maps - The Couchbase Blog","description":"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &loading it into a mapping product.","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":"https:\/\/www.couchbase.com\/blog\/es\/getting-started-with-geojson-couchbase-net-and-google-maps\/","og_locale":"es_MX","og_type":"article","og_title":"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps","og_description":"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &loading it into a mapping product.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/getting-started-with-geojson-couchbase-net-and-google-maps\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-01-30T20:09:53+00:00","article_modified_time":"2025-06-14T03:15:24+00:00","author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps","datePublished":"2017-01-30T20:09:53+00:00","dateModified":"2025-06-14T03:15:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"},"wordCount":1203,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Google Maps","javascript"],"articleSection":[".NET","ASP.NET","Couchbase Server","JavaScript"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/","url":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/","name":"GeoJSON, Couchbase, .NET & Google Maps - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-01-30T20:09:53+00:00","dateModified":"2025-06-14T03:15:24+00:00","description":"Learn through a very simple example of storing\/querying GeoJSON data from a Couchbase instance &loading it into a mapping product.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"Matthew Groves","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/ba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/matthew-groves\/"}]}},"authors":[{"term_id":8937,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","first_name":"Matthew","last_name":"Groves","user_url":"https:\/\/crosscuttingconcerns.com","author_category":"","description":"A Matthew D. Groves le encanta programar.  No importa si se trata de C#, jQuery o PHP: enviar\u00e1 pull requests para cualquier cosa.  Lleva codificando profesionalmente desde que escribi\u00f3 una aplicaci\u00f3n de punto de venta en QuickBASIC para la pizzer\u00eda de sus padres, all\u00e1 por los a\u00f1os noventa.  Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores.  Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=2516"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/2516\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=2516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=2516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=2516"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=2516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}