Skip to content
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
119 lines (98 sloc) 4.89 KB
<!DOCTYPE html>
<html lang="en">
<title>Get closest point to position - Azure Maps Web SDK Samples</title>
<meta charset="utf-8" />
<meta http-equiv="x-ua-compatible" content="IE=Edge" />
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no" />
<meta name="description" content="This sample shows how to calculate the closest point to a given coordinate, in this case, where the user clicked on the map. " />
<meta name="keywords" content="Microsoft maps, map, gis, API, SDK, geospatial, spatial math, math, point, coordinate" />
<meta name="author" content="Microsoft Azure Maps" />
<!-- Add references to the Azure Maps Map control JavaScript and CSS files. -->
<link rel="stylesheet" href="" type="text/css" />
<script src=""></script>
<script type='text/javascript'>
var map, datasource, closestPoint;
function GetMap() {
//Point the Azure Maps domain to the US Azure Gov Cloud domain.
//Initialize a map instance.
map = new atlas.Map('myMap', {
view: 'Auto',
//Add your Azure Maps subscription key to the map SDK. Get an Azure Maps key at
authOptions: {
authType: 'subscriptionKey',
subscriptionKey: '<Your Azure Maps Key>'
//Wait until the map resources are ready.'ready', function () {
//Create a data source and add it to the map.
datasource = new atlas.source.DataSource();
//Generate some random data.
//Add a bubble layer to render the points on the map.
map.layers.add(new atlas.layer.BubbleLayer(datasource, null, {
//Get the color of each point from it's color property.
color: ['get', 'color']
//Add a click event to the map.'click', getClosestPoint);
function getClosestPoint(e) {
//Reset the color of any previously closest point.
if (closestPoint) {
closestPoint.setProperties({ color: 'blue' });
closestPoint = null;
document.getElementById('infoPanel').innerHTML = '';
var shapes = datasource.getShapes();
var minDistance = Infinity;
for (var i = 0; i < shapes.length; i++) {
if (shapes[i].getType() === 'Point') {
//Calculate the distance between the point shape and the position.
var d = atlas.math.getDistanceTo(shapes[i].getCoordinates(), e.position, 'miles');
if (d < minDistance) {
closestPoint = shapes[i];
minDistance = d;
if (closestPoint) {
closestPoint.setProperties({ color: 'red' });
//Display details about closest point.
document.getElementById('infoPanel').innerHTML = ` - Point Id: ${closestPoint.getProperties().id}<br/> - Distance: ${Math.round(minDistance)} miles`;
function generateRandomPoints() {
var points = [];
for (var i = 0; i < 100; i++) {
Math.random() * 360 - 180,
Math.random()* 170 - 85
]), {
color: 'blue',
id: i
<body onload="GetMap()">
<div id="myMap" style="position:relative;width:100%;min-width:290px;height:600px;"></div>
<div style="position:absolute;top:10px;left:10px;background-color:#fff;padding:10px;border-radius:20px;">
Click on the map to find the closest point. <br/><br />
Closest point:<br /><br />
<span id="infoPanel"></span>
<fieldset style="width:calc(100% - 30px);min-width:290px;margin-top:10px;">
<legend><h1 style="font-size:16px">Get closest point to position</h1></legend>
This sample shows how to calculate the closest point to a given position, in this case, where the user clicked on the map.
The closest point will have it's color changed to red.
This is achieved by looping over through the data and calculating the distance between the position and each point using the atlas.math.getDistanceTo function.
You can’t perform that action at this time.