geocoding-simple
Sample code supporting Google Maps Platform JavaScript API documentation.
author(s):
Geo Developer IX Documentation Team
HTML
<!doctype html>
<!--
@license
Copyright 2026 Google LLC. All Rights Reserved.
SPDX-License-Identifier: Apache-2.0
-->
<html>
<head>
<title>Geocoding Service</title>
<script>
// prettier-ignore
(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({
});
</script>
</head>
<body>
<gmp-map center="-34.397, 150.644" zoom="10" map-id="DEMO_MAP_ID">
<div id="floating-panel" slot="control-block-start-inline-start">
<input
type="text"
id="address"
placeholder="Enter an address or click the map to reverse geocode." />
<br />
<input type="button" id="submit" value="Geocode" />
<input type="button" id="clear" value="Clear Results" />
<br />
</div>
<pre id="response-container" slot="control-block-start-inline-end">
<code id="response"></code>
</pre>
</gmp-map>
</body>
</html>
CSS
/**
* @license
* Copyright 2026 Google LLC. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
gmp-map {
height: 100%;
width: 100%;
}
/*
* Optional: Makes the sample page fill the window.
*/
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
#floating-panel {
background-color: #fff;
border-radius: 5px;
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
margin: 10px;
padding: 5px;
font:
400 18px Roboto,
Arial,
sans-serif;
width: 350px;
height: 100px;
}
#response-container {
background-color: #fff;
border: 0;
border-radius: 5px;
box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px;
padding: 5px;
margin: 10px;
font-size: small;
width: 400px;
background-color: rgba(255, 255, 255, 0.95);
max-height: 70vh;
overflow-x: auto;
display: none;
}
#address {
width: 100%;
padding: 10px;
margin: 5px 0;
box-sizing: border-box;
}
#submit,
#clear {
background-color: #fff;
border: 0;
border-radius: 2px;
box-shadow: 0 1px 4px -1px rgba(0, 0, 0, 0.3);
height: 40px;
cursor: pointer;
}
#clear:hover {
background: rgb(235, 235, 235);
}
#submit {
background-color: #1a73e8;
color: white;
}
#submit:hover {
background-color: #1765cc;
}
JavaScript
'use strict';
/**
* @license
* Copyright 2026 Google LLC. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0
*/
let geocoder;
let mapElement;
let innerMap;
let marker;
let responseDiv;
let responsePre;
async function init() {
// Request the needed libraries.
const [{ Geocoder }, { AdvancedMarkerElement }, { ControlPosition }] =
await Promise.all([
google.maps.importLibrary('geocoding'),
google.maps.importLibrary('marker'),
google.maps.importLibrary('core'),
google.maps.importLibrary('maps'),
]);
// Get the gmp-map element.
mapElement = document.querySelector('gmp-map');
// Get the inner map.
innerMap = mapElement.innerMap;
// Set map options.
innerMap.setOptions({
mapTypeControl: false,
fullscreenControl: false,
cameraControlOptions: {
position: ControlPosition.INLINE_START_BLOCK_END,
},
draggableCursor: 'crosshair',
});
geocoder = new Geocoder();
const inputText = document.getElementById('address');
const submitButton = document.getElementById('submit');
const clearButton = document.getElementById('clear');
responseDiv = document.getElementById('response-container');
responsePre = document.getElementById('response');
marker = new AdvancedMarkerElement();
innerMap.addListener('click', (e) => {
void geocode({ location: e.latLng });
});
submitButton.addEventListener('click', () => {
void geocode({ address: inputText.value });
});
clearButton.addEventListener('click', () => {
clear();
});
clear();
}
function clear() {
marker.map = null;
responseDiv.style.display = 'none';
}
async function geocode(request) {
clear();
const { LatLng } = await google.maps.importLibrary('core');
try {
const response = await geocoder.geocode(request);
const { results } = response;
innerMap.setCenter(results[0].geometry.location);
marker.position = new LatLng(results[0].geometry.location);
mapElement.append(marker);
...