{"componentChunkName":"component---src-templates-blog-post-js","path":"/current-location-google-apis","result":{"data":{"markdownRemark":{"html":"<p>You can easily use Google API services to enable your web application to get current location and places around.</p>\n<p><img src=\"https://user-images.githubusercontent.com/10103699/133358388-7e60a6de-3a0e-40d5-b874-db7fe92fe886.jpeg\" alt=\"gapi1\"></p>\n<p>Here's a simple guide:</p>\n<h3>1. Create a new project</h3>\n<p>Go to <a href=\"https://console.developers.google.com/\">Google API Console</a> and create a new project.</p>\n<p><img src=\"https://user-images.githubusercontent.com/10103699/133358394-07ba5d27-03c1-45a0-b70b-7042fab5ef6d.png\" alt=\"gapi2\"></p>\n<h3>2. Enable APIs</h3>\n<p>You will be directed to the API Manager panel. In the API library, search for the required APIs and enable\nthem for your project. To get location, you would require the following location based APIs:</p>\n<div class=\"gatsby-highlight\" data-language=\"text\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-text line-numbers\"><code class=\"language-text\">* Google Maps JavaScript API\n* Google Maps Geocoding API</code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span></span></pre></div>\n<p><img src=\"https://user-images.githubusercontent.com/10103699/133358400-2d1ea19f-b752-47df-895b-65ae6a081ea4.png\" alt=\"gapi3\"></p>\n<h3>3. Create API keys</h3>\n<p>When enabling APIs, you will be directed to create the API keys for your project. In this task, you will only\nrequire a key for Google Maps JavaScript API. Created keys can be viewed in the Credentials panel. </p>\n<h3>4. Load Google Maps JavaScript API.</h3>\n<p>This should be done once the page loading has completed (the code has to be added at the end of the HTML code).\nEnter your generated API key and include Google Places as a library in the same URL. The <code class=\"language-text\">initMap</code> callback\nfunction is executed once the API is loaded.</p>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token operator\">&lt;</span>script\n    src<span class=\"token operator\">=</span><span class=\"token string\">\"https://maps.googleapis.com/maps/api/js?key=YOU_API_KEY&amp;libraries=places&amp;callback=initMap&amp;language=en\"</span>\n    <span class=\"token keyword\">async</span> defer<span class=\"token operator\">></span>\n<span class=\"token operator\">&lt;</span><span class=\"token operator\">/</span>script<span class=\"token operator\">></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span></span></pre></div>\n<h3>5. Add a map to your application.</h3>\n<p>You can style the map element as required.</p>\n<div class=\"gatsby-highlight\" data-language=\"html\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-html line-numbers\"><code class=\"language-html\"><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>style</span><span class=\"token punctuation\">></span></span><span class=\"token style\"><span class=\"token language-css\">\n  <span class=\"token selector\">#myPlacesMapView</span><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">bottom</span><span class=\"token punctuation\">:</span> 0<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">right</span><span class=\"token punctuation\">:</span> 0<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">position</span><span class=\"token punctuation\">:</span> fixed<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">z-index</span><span class=\"token punctuation\">:</span> 1<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n  <span class=\"token selector\">#map</span><span class=\"token punctuation\">{</span>\n    <span class=\"token property\">margin-top</span><span class=\"token punctuation\">:</span> 150px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">margin-left</span><span class=\"token punctuation\">:</span> 50px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">padding-top</span><span class=\"token punctuation\">:</span> 150px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">width</span><span class=\"token punctuation\">:</span> 600px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">height</span><span class=\"token punctuation\">:</span> 400px<span class=\"token punctuation\">;</span>\n    <span class=\"token property\">background-color</span><span class=\"token punctuation\">:</span> #5bc0de<span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span>\n</span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>style</span><span class=\"token punctuation\">></span></span>\n\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>myPlacesMapView<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span>\n     <span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;</span>div</span> <span class=\"token attr-name\">id</span><span class=\"token attr-value\"><span class=\"token punctuation attr-equals\">=</span><span class=\"token punctuation\">\"</span>map<span class=\"token punctuation\">\"</span></span><span class=\"token punctuation\">></span></span><span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span>\n<span class=\"token tag\"><span class=\"token tag\"><span class=\"token punctuation\">&lt;/</span>div</span><span class=\"token punctuation\">></span></span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<h3>6. Now define the callback function.</h3>\n<div class=\"gatsby-highlight\" data-language=\"javascript\"><pre style=\"counter-reset: linenumber NaN\" class=\"language-javascript line-numbers\"><code class=\"language-javascript\"><span class=\"token keyword\">function</span> <span class=\"token function\">initMap</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    <span class=\"token comment\">// Try HTML5 geolocation to get the current location </span>\n    <span class=\"token keyword\">var</span> pos<span class=\"token punctuation\">;</span>\n    <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>navigator<span class=\"token punctuation\">.</span>geolocation<span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n        navigator<span class=\"token punctuation\">.</span>geolocation<span class=\"token punctuation\">.</span><span class=\"token function\">getCurrentPosition</span><span class=\"token punctuation\">(</span><span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">position</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                pos <span class=\"token operator\">=</span> <span class=\"token punctuation\">{</span>\n                    lat<span class=\"token operator\">:</span> position<span class=\"token punctuation\">.</span>coords<span class=\"token punctuation\">.</span>latitude<span class=\"token punctuation\">,</span>\n                    lng<span class=\"token operator\">:</span> position<span class=\"token punctuation\">.</span>coords<span class=\"token punctuation\">.</span>longitude\n                <span class=\"token punctuation\">}</span><span class=\"token punctuation\">;</span>\n                <span class=\"token comment\">// Set current location as the center of the map and add a marker to the map</span>\n                map <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>Map</span><span class=\"token punctuation\">(</span>document<span class=\"token punctuation\">.</span><span class=\"token function\">getElementById</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"map\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">,</span> <span class=\"token punctuation\">{</span>\n                    center<span class=\"token operator\">:</span> <span class=\"token punctuation\">{</span>lat<span class=\"token operator\">:</span> position<span class=\"token punctuation\">.</span>coords<span class=\"token punctuation\">.</span>latitude<span class=\"token punctuation\">,</span> lng<span class=\"token operator\">:</span> position<span class=\"token punctuation\">.</span>coords<span class=\"token punctuation\">.</span>longitude<span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n                    zoom<span class=\"token operator\">:</span> <span class=\"token number\">14</span>\n                <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                marker <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>Marker</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n                    map<span class=\"token operator\">:</span> map<span class=\"token punctuation\">,</span>\n                    position<span class=\"token operator\">:</span> pos\n                <span class=\"token punctuation\">}</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>                \n                <span class=\"token keyword\">var</span> infowindow <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>InfoWindow</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n\n                <span class=\"token comment\">// Use geocoding to get the address of current location</span>\n                <span class=\"token keyword\">var</span> geocoder <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>Geocoder</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                <span class=\"token keyword\">var</span> latlng <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>LatLng</span><span class=\"token punctuation\">(</span>pos<span class=\"token punctuation\">.</span>lat<span class=\"token punctuation\">,</span> pos<span class=\"token punctuation\">.</span>lng<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                geocoder<span class=\"token punctuation\">.</span><span class=\"token function\">geocode</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n                        <span class=\"token string\">'latLng'</span><span class=\"token operator\">:</span> latlng\n                    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">results<span class=\"token punctuation\">,</span> status</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>status <span class=\"token operator\">==</span> google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>GeocoderStatus<span class=\"token punctuation\">.</span><span class=\"token constant\">OK</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                            <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>results<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token keyword\">var</span> location <span class=\"token operator\">=</span> results<span class=\"token punctuation\">[</span><span class=\"token number\">0</span><span class=\"token punctuation\">]</span><span class=\"token punctuation\">;</span>\n                                <span class=\"token keyword\">var</span> address_main <span class=\"token operator\">=</span> location<span class=\"token punctuation\">.</span>formatted_address<span class=\"token punctuation\">;</span>\n                                placeID <span class=\"token operator\">=</span> location<span class=\"token punctuation\">.</span>place_id<span class=\"token punctuation\">;</span>\n                              \n                                <span class=\"token comment\">// Use Places library to get the name and other details of current location</span>\n                                <span class=\"token keyword\">var</span> service <span class=\"token operator\">=</span> <span class=\"token keyword\">new</span> <span class=\"token class-name\">google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>places<span class=\"token punctuation\">.</span>PlacesService</span><span class=\"token punctuation\">(</span>map<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                service<span class=\"token punctuation\">.</span><span class=\"token function\">getDetails</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">{</span>\n                                        placeId<span class=\"token operator\">:</span> placeID\n                                    <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span> <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token parameter\">place<span class=\"token punctuation\">,</span> stat</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                                        <span class=\"token keyword\">if</span> <span class=\"token punctuation\">(</span>stat <span class=\"token operator\">==</span> google<span class=\"token punctuation\">.</span>maps<span class=\"token punctuation\">.</span>places<span class=\"token punctuation\">.</span>PlacesServiceStatus<span class=\"token punctuation\">.</span><span class=\"token constant\">OK</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                                            <span class=\"token keyword\">var</span> name <span class=\"token operator\">=</span> place<span class=\"token punctuation\">.</span>name<span class=\"token punctuation\">;</span>\n                                            infowindow<span class=\"token punctuation\">.</span><span class=\"token function\">setContent</span><span class=\"token punctuation\">(</span><span class=\"token string\">'&lt;div>&lt;strong>  You\\'re here:  '</span> <span class=\"token operator\">+</span> place<span class=\"token punctuation\">.</span>name <span class=\"token operator\">+</span> <span class=\"token string\">'&lt;/strong>&lt;br>'</span> <span class=\"token operator\">+</span>\n                                                place<span class=\"token punctuation\">.</span>vicinity <span class=\"token operator\">+</span> <span class=\"token string\">'&lt;/div>'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                            infowindow<span class=\"token punctuation\">.</span><span class=\"token function\">open</span><span class=\"token punctuation\">(</span>map<span class=\"token punctuation\">,</span> marker<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                                        <span class=\"token punctuation\">}</span>\n                                    <span class=\"token punctuation\">}</span>\n                                <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                            <span class=\"token punctuation\">}</span>\n                            <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n                                <span class=\"token function\">alert</span><span class=\"token punctuation\">(</span><span class=\"token string\">\"address not found\"</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n                            <span class=\"token punctuation\">}</span>\n                        <span class=\"token punctuation\">}</span>\n                        <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n                        <span class=\"token punctuation\">}</span>\n                    <span class=\"token punctuation\">}</span>\n                <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span><span class=\"token punctuation\">,</span>\n            <span class=\"token keyword\">function</span> <span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n                <span class=\"token function\">handleLocationError</span><span class=\"token punctuation\">(</span><span class=\"token boolean\">true</span><span class=\"token punctuation\">,</span> map<span class=\"token punctuation\">.</span><span class=\"token function\">getCenter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n            <span class=\"token punctuation\">}</span>\n        <span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span> <span class=\"token keyword\">else</span> <span class=\"token punctuation\">{</span>\n        <span class=\"token comment\">// Browser doesn't support Geolocation</span>\n        <span class=\"token function\">handleLocationError</span><span class=\"token punctuation\">(</span><span class=\"token boolean\">false</span><span class=\"token punctuation\">,</span> map<span class=\"token punctuation\">.</span><span class=\"token function\">getCenter</span><span class=\"token punctuation\">(</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    <span class=\"token punctuation\">}</span>\n<span class=\"token punctuation\">}</span>\n\n<span class=\"token keyword\">function</span> <span class=\"token function\">handleLocationError</span><span class=\"token punctuation\">(</span><span class=\"token parameter\">browserHasGeolocation<span class=\"token punctuation\">,</span> infoWindow<span class=\"token punctuation\">,</span> pos</span><span class=\"token punctuation\">)</span> <span class=\"token punctuation\">{</span>\n    infoWindow<span class=\"token punctuation\">.</span><span class=\"token function\">setPosition</span><span class=\"token punctuation\">(</span>pos<span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n    infoWindow<span class=\"token punctuation\">.</span><span class=\"token function\">setContent</span><span class=\"token punctuation\">(</span>browserHasGeolocation <span class=\"token operator\">?</span>\n        <span class=\"token string\">'Error: The Geolocation service failed.'</span> <span class=\"token operator\">:</span>\n        <span class=\"token string\">'Error: Your browser doesn\\'t support geolocation.'</span><span class=\"token punctuation\">)</span><span class=\"token punctuation\">;</span>\n<span class=\"token punctuation\">}</span></code><span aria-hidden=\"true\" class=\"line-numbers-rows\" style=\"white-space: normal; width: auto; left: 0;\"><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span><span></span></span></pre></div>\n<p>When this is executed, your application will display a map with current location details. </p>\n<p><img src=\"https://user-images.githubusercontent.com/10103699/133358404-a2146e58-3ab8-459a-8f55-131978996788.png\" alt=\"gapi4\"></p>\n<p>That's it! Happy coding!</p>","frontmatter":{"date":"February 10, 2017","path":"/current-location-google-apis","title":"Get Current Location using Google APIs","tags":["How to"]}}},"pageContext":{}},"staticQueryHashes":["3649515864"]}