Bing Maps: Draw a Circle Radius Around a Lat/Long Point
I get requests on how to draw radius’ around points on the map. And, up until now, I never needed to do it myself, so I didn’t have a code snippet to do it. I did a search and quickly found an example over at viavirtualearth on how to do it in an older version of Virtual Earth. Other than being coded for an older version of Virtual Earth (and incompatible with VE6); it’s coded to only handle drawing a radius in Kilometers.
So, I decided to upgrade the code example to support VE6, and support both Miles and Kilometers. I’m also converted it to make use of the GeoCodeCalc.ToDegrees function that I originally posted in my “Calculate Distance of UserDrawn Polyline” post.
Download the Full Example Here
And, in case you don’t feel like downloading the example code that uses it, here’s the source to the method that calculates the points that make up the radius:
/* *************************************************************************** */
/* Written Chris Pietschmann (<a href="/"></a>) */
/* This code is dependant on the GeoCodeCalc class found here: */
/* <a href="/Blog/Post.aspx?PostID=1453">/Blog/Post.aspx?PostID=1453</a> */
/* *************************************************************************** */
/* This mathimatical code is a modified version of the code originally posted */
/* at the following location: *//* <a href="http://viavirtualearth.com/Wiki/Draw+a+circle.ashx">http://viavirtualearth.com/Wiki/Draw+a+circle.ashx</a> */
/* *************************************************************************** */
if (GeoCodeCalc == undefined)
var GeoCodeCalc = {}
GeoCodeCalc.ToDegrees = function(radians){ return radians * 180 / Math.PI;};
function CreateCircle(loc, radius, units){
var earthRadius = parseFloat(units);
var lat = GeoCodeCalc.ToRadian(loc.Latitude); //radians
var lon = GeoCodeCalc.ToRadian(loc.Longitude); //radians
var d = parseFloat(radius) / earthRadius; // d = angular distance covered on earth&#39;s surface
var locs = new Array();
for (x = 0; x &lt;= 360; x++) {
var p2 = new VELatLong(0,0)
brng = GeoCodeCalc.ToRadian(x); //radians
var latRadians = Math.asin(Math.sin(lat) * Math.cos(d) + Math.cos(lat) * Math.sin(d) * Math.cos(brng));
var lngRadians = lon + Math.atan2(Math.sin(brng) * Math.sin(d) * Math.cos(lat), Math.cos(d)  Math.sin(lat) * Math.sin(latRadians));
locs.push(new VELatLong(GeoCodeCalc.ToDegrees(latRadians), GeoCodeCalc.ToDegrees(lngRadians)));
}
return new VEShape(VEShapeType.Polyline, locs);
}
Recent Posts

Loop through JavaScript Arrays using for, forEach, and map functions
01 Jul 2020 
JavaScript: Convert String to Number
06 Apr 2020 
Encryption and Code are Greater Than Guns and Bombs
11 Mar 2020 
macOS: Monitor CPU Usage and Frequency Info
15 Feb 2020 
Basics of JavaScript Class Inheritance
02 Jan 2020
Legal Disclaimer
This site is a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to Amazon.com. We also participates in affiliate programs with Udemy, and other sites. This site is compensated for referring traffic and business to these companies.