{"id":964,"date":"2017-01-30T20:09:53","date_gmt":"2017-01-30T20:09:53","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"},"modified":"2017-01-30T20:09:53","modified_gmt":"2017-01-30T20:09:53","slug":"getting-started-with-geojson-couchbase-net-and-google-maps","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/getting-started-with-geojson-couchbase-net-and-google-maps\/","title":{"rendered":"Getting Started with GeoJSON, Couchbase, .NET, and Google Maps"},"content":{"rendered":"\n<p><em>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 software, he\u2019s learning how to be a better software developer. This isn\u00e2\u20ac\u2122t just a career for him \u00e2\u20ac\u201c it\u00e2\u20ac\u2122s also a lifestyle.<\/em><\/p>\n\n\n\n<p><em>Follow along with Calvin\u2019s post by <a href=\"https:\/\/github.com\/CalvinAllen\/geojson-with-couchbase-and-dotnet\">checking out the source code and GitHub<\/a> and <a href=\"https:\/\/couchbase.com\/download?utm_source=blogs&amp;utm_medium=link&amp;utm_campaign=blogs\">downloading the latest developer preview release of Couchbase<\/a>.<\/em><\/p>\n\n\n\n<p>What is GeoJSON? <a href=\"https:\/\/geojson.org\/\">GeoJSON.org<\/a> defines it as:<br>\n&#8220;GeoJSON is a format for encoding a variety of geographic data structures&#8221;<\/p>\n\n\n\n<p>What does that really mean, though? Essentially, it\u2019s a standard format, using the JSON structure, for defining geographic objects. These &#8220;geographic objects&#8221; can be a number of various items, ranging from a simple &#8220;Point&#8221;, to a more complex object, such as a &#8220;Polygon&#8221;.<\/p>\n\n\n\n<p>Here is a simple example of a &#8220;point on a map&#8221; for the &#8220;Dinagat Islands&#8221;:<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-JavaScript\">{<br \/>\n  \"type\": \"FeatureCollection\",<br \/>\n  \"features\": [<br \/>\n    {<br \/>\n      \"type\": \"Feature\",<br \/>\n      \"geometry\": {<br \/>\n        \"type\": \"Point\",<br \/>\n        \"coordinates\": [<br \/>\n          125.6,<br \/>\n          10.1<br \/>\n        ]<br \/>\n      },<br \/>\n      \"properties\": { }<br \/>\n    }<br \/>\n  ]<br \/>\n}<\/code>[\/crayon]<\/p>\n\n\n\n<p>Now that you have all the backstory, you may be asking, &#8220;Why do I even need GeoJSON?&#8221;. The simple answer is that it\u2019s a standard currently supported in a variety of mapping technologies, such as Google Maps. With your data already in the GeoJSON format, you can provide that data <strong>directly<\/strong> to Google Maps, and render your object as described. Not only does it save you from having to &#8220;roll your own&#8221; format, but other providers are already supporting it, which you can leverage as desired.<\/p>\n\n\n\n<p>Let\u2019s get to some code!<\/p>\n\n\n\n<p>I\u2019m going to demonstrate the GeoJSON format using a .NET MVC application, Couchbase (Community) Server (and the .NET SDK), and Google Maps &#8211; I\u2019m going to have to assume that you have some working knowledge of all of these utilities.<\/p>\n\n\n\n<p>I won\u2019t go into details on how to create the MVC project, or installing\/configuring Couchbase, as there are plenty of other tutorials\/articles out there describing how to accomplish these items, especially on <a href=\"https:\/\/www.couchbase.com\/blog\/facet\/Author\/Matthew+Groves\/\">Matthew Groves Couchbase blog<\/a>.<br>\nOne thing I will mention now, is that I called the Couchbase bucket &#8220;features&#8221;, and have pre-loaded it (all through the Couchbase Console) with two documents &#8211; one for a polygon around Rome, and one with a point over the Dinagat Islands (as seen above). Both of these json files can be found in the github repository that I\u2019ll link to later in the article.<\/p>\n\n\n\n<p>With the new MVC website loaded up in Visual Studio, open the NuGet package manager console, and type the following command to load the Couchbase .NET SDK:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Install-Package couchbasenetclient<\/code><\/pre>\n\n\n\n<p>Once the Couchbase .NET SDK has finished installing, run the following command to install the geojson library:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Install-Package geojson.net<\/code><\/pre>\n\n\n\n<p>The first package, &#8220;couchbasenetclient&#8221;, will be used to communicate to our local Couchbase server for managing our GeoJSON documents. This is a library created \/ supported by the Couchbase Team. The next, &#8220;geojson.net&#8221;, is a helper library to create \/ read GeoJSON documents. Under the hood, the geojson.net library utilizes JSON.Net for json serialization \/ deserialization of the .NET types that the library provides to us. You could definitely get away without this package\/library, and manage the types yourself, but to keep thing simple, I\u2019m choosing to utilize it.<\/p>\n\n\n\n<p>The first thing we need to do is wire up our controller. I\u2019m going to reuse the &#8220;HomeController&#8221; that already exists in the project.<\/p>\n\n\n\n<p>First, I\u2019ll add a constructor, which we\u2019ll use to store our bucket:<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">public class HomeController : Controller {<\/p>\n<p>    private readonly IBucket _bucket;<\/p>\n<p>    public HomeController() {<br \/>\n        _bucket = ClusterHelper.GetBucket(\"features\");<br \/>\n    }<\/p>\n<p>}<\/code>[\/crayon]<\/p>\n\n\n\n<p>Now, I\u2019m going to need three endpoints &#8211;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>One to get a list of all features<\/li>\n\n\n<li>One that will act as a simple routing to the map page (you\u2019ll see what I mean)<\/li>\n\n\n<li>And, lastly, one that the Google Maps API will make a direct call to, in order to get the JSON for the feature.<\/li>\n\n<\/ol>\n\n\n\n<p>Here are all three:<\/p>\n\n\n\n<p>First &#8211; is the action that returns the entire list of features in my Couchbase bucket. This is just a simple N1QL query to get the Feature Ids as a list of strings. (I only care about the ID of the feature in the list page)<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">public ActionResult Features() {<br \/>\n\tvar request = QueryRequest.Create(\"SELECT META().id as `id` FROM `features` as f\");<\/p>\n<p>\trequest.ScanConsistency(ScanConsistency.RequestPlus);<\/p>\n<p>\tvar featureIds = _bucket<br \/>\n\t\t\t.Query&lt;dynamic&gt;(request)<br \/>\n\t\t\t.Rows<br \/>\n\t\t\t.Select(x =&gt; x.id.ToString())<br \/>\n\t\t\t.ToList();<\/p>\n<p>\treturn View(featureIds);<br \/>\n}<\/code>[\/crayon]<\/p>\n\n\n\n<p>This is the simple routing method that I utilize while navigating from the list page to hold the ID of the requested feature the user clicked on.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">public ActionResult MapFeature(string id) {<br \/>\n    ViewBag.FeatureId = id;<br \/>\n    return View();<br \/>\n}<\/code>[\/crayon]<\/p>\n\n\n\n<p>And, finally, this method gets called via the Google Maps API in the MapFeature page to get the JSON of the feature the user wishes to map (again, using the FeatureCollection object from the geojson.net library &#8211; this uses Json.Net to serialize that object, which comes with its own serializers in the library as well).<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">public ContentResult GetFeatureJson(string id) {<br \/>\n    var feature = _bucket.Get&lt;FeatureCollection&gt;(id).Value;<br \/>\n\tvar json = JsonConvert.SerializeObject(feature);<\/p>\n<p>\treturn Content(json, \"application\/json\");<br \/>\n}<\/code>[\/crayon]<\/p>\n\n\n\n<p>Now, onto the view pages themselves (there\u2019s only two)<\/p>\n\n\n\n<p>On the &#8220;Features&#8221; page, which is just a listing of the features in our Couchbase bucket &#8211; we just output each of the feature IDs into an action link inside of an unordered list:<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">@model List&lt;string&gt;<\/p>\n<p>&lt;h2&gt;Features&lt;\/h2&gt;<\/p>\n<p>&lt;ul&gt;<br \/>\n\t@foreach (var feature in Model) {<br \/>\n\t\t&lt;li&gt;@Html.ActionLink(feature, \"MapFeature\", \"Home\", new { id = feature }, null)&lt;\/li&gt;<br \/>\n\t}<br \/>\n&lt;\/ul&gt;<\/code>[\/crayon]<\/p>\n\n\n\n<p>The last page, MapFeature, is the one that does the &#8220;heavy lifting&#8221;:<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">&lt;h2&gt;Map Feature&lt;\/h2&gt;<br \/>\n@{<br \/>\n\tvar id = ViewBag.FeatureId;<br \/>\n}<\/p>\n<p><\/code>[\/crayon]<\/p>\n\n\n\n<p><code class=\"language-C#\"><br>\n&lt;\/div&gt;<\/code><\/p>\n\n\n\n<p>\t$(function () {<br>\n\t\tvar map = new google.maps.Map(document.getElementById(&#8216;map&#8217;), {<br>\n\t\t\tzoom: 6<br>\n\t\t});<\/p>\n\n\n\n<p>\t\tmap.data.loadGeoJson(&#8216;\/Home\/GetFeatureJson\/@id&#8217;);<\/p>\n\n\n\n<p>\t\t\/\/the callback for each of the features in the loop &#8211; last one wins<br>\n\t\tfunction forEachGeometry(feature) {<br>\n\t\t\tfeature.getGeometry().forEachLatLng(resetCenter);<br>\n\t\t};<\/p>\n\n\n\n<p>\t\t\/\/takes the Latitute and Longitude from each Geometry and resets the center point on the map &#8211; last one wins &#8211; totally inefficient<br>\n\t\tfunction resetCenter(latLng) {<br>\n\t\t\tmap.setCenter(latLng);<br>\n\t\t};<\/p>\n\n\n\n<p>\t\t\/\/every time a feature is added to the map, loop over the collection &#8211; completely inefficient, but should provide an idea<br>\n\t\tmap.data.addListener(&#8216;addfeature&#8217;, function (e) {<br>\n\t\t\tmap.data.forEach(forEachGeometry);<br>\n\t\t});<\/p>\n\n\n\n<p>\t});<\/p>\n\n\n\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><\/p>\n\n\n\n<p>As this page loads up, we get the ID of the feature that the user clicked on (stored in ViewBag), and then dive right into our HTML markup. You\u2019ll notice the two divs, which are placeholders (especially the interior one), that the Google Maps API will utilize to display the map\/features.<\/p>\n\n\n\n<p>Then we get into the Javascript &#8211; most of this is pretty basic, and <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/\">straight from the documents Google provides<\/a>, except for the few bolt-on methods I added, which we\u2019ll look at.<\/p>\n\n\n\n<p>The very first thing we do is &#8216;new up&#8217; our map object, and tell it what DOM element to utilize, and what the default zoom level will be. Then you can see that we are using a built-in method of Google Maps, loadGeoJson, that takes our local URL for grabbing the JSON out of our Couchbase bucket.<\/p>\n\n\n\n<p>The next few methods are quick bolt-on\u2019s I added for the sake of the demo, which are not meant to be utilized in a production environment, as they are very inefficient. They reset the center of the map to the last Latitude\/Longitude object we find in the data we loaded into the map. This is not precise logic, but it will &#8220;center&#8221; the map over top of whichever feature we are rendering.<\/p>\n\n\n\n<p>The last thing we do is load the Google Maps API from their CDN.<\/p>\n\n\n\n<p>This is a very simple example of storing\/querying GeoJSON data from a Couchbase instance, and loading it into a mapping product. And, although I chose Google Maps, other providers, such as MapBox, support GeoJSON as well.<\/p>\n\n\n\n<p>And, lastly, if you need to see the example in its entirety, <a href=\"https:\/\/github.com\/CalvinAllen\/geojson-with-couchbase-and-dotnet\">check out the code over on github<\/a>. You\u2019ll simply need to modify the MapFeature.cshtml page to include your own Google Maps API Key (visit <a href=\"https:\/\/developers.google.com\/maps\/documentation\/javascript\/\"> https:\/\/developers.google.com\/maps\/documentation\/javascript\/<\/a>, log in with your Google account, and click the &#8220;Get A Key&#8221; button on the top-right) and that should be it! Feel free to drop me a line if you have further questions &#8211; I\u2019m on Twitter as <a href=\"https:\/\/twitter.com\/CalvinAllen_\">CalvinAllen_<\/a>, or check out my personal blog at <a href=\"https:\/\/www.calvinallen.net\/\">https:\/\/www.calvinallen.net<\/a>.<\/p>\n","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 software, he\u2019s learning how to be a better software developer. This isn\u00e2\u20ac\u2122t just a career [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":18,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[33,188,54,163],"tags":[224,165],"ppma_author":[186],"class_list":["post-964","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"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\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\/pt\/getting-started-with-geojson-couchbase-net-and-google-maps\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1800\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\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\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/getting-started-with-geojson-couchbase-net-and-google-maps\\\/\"},\"wordCount\":1347,\"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\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Google Maps\",\"javascript\"],\"articleSection\":[\".NET\",\"ASP.NET\",\"Couchbase Server\",\"JavaScript\"],\"inLanguage\":\"pt-BR\",\"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\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-01-30T20:09:53+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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/getting-started-with-geojson-couchbase-net-and-google-maps\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\\\/5\\\/2026\\\/05\\\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"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\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54\",\"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\\\/pt\\\/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\/pt\/getting-started-with-geojson-couchbase-net-and-google-maps\/","og_locale":"pt_BR","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\/pt\/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","og_image":[{"width":1800,"height":630,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/couchbase-nosql-dbaas.png","type":"image\/png"}],"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","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"},"wordCount":1347,"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\/5\/2026\/05\/couchbase-nosql-dbaas.png","keywords":["Google Maps","javascript"],"articleSection":[".NET","ASP.NET","Couchbase Server","JavaScript"],"inLanguage":"pt-BR","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\/5\/2026\/05\/couchbase-nosql-dbaas.png","datePublished":"2017-01-30T20:09:53+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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/getting-started-with-geojson-couchbase-net-and-google-maps\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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\/5\/2026\/05\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","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":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54","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\/pt\/author\/matthew-groves\/"}]}},"acf":[],"authors":[{"term_id":186,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/964","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=964"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/964\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/18"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=964"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=964"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=964"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=964"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}