0

我有一个从数据库填充图钉的地图。和一个圆圈。我希望能够弄清楚 VE 形状圆半径内还有哪些其他图钉并创建它们的地址列表。

     function addPushPin(lat, long) {
     //var point = new Microsoft.Maps.Point(e.getX(), e.getY());

     //var pushpinLocation = new(lat, long);
     var s = new VEShape(VEShapeType.Pushpin, new VELatLong(lat,long)); 


     var customIcon = new VECustomIconSpecification();
     //customIcon.TextContent = "yo bana4na4";
     customIcon.Image = "http://universidadescancun.com/wp-content/themes/GeoUnis3/images/pinpoint-fiesta.png";
     //customIcon.ImageOffset = new VEPixel();

     s.SetTitle("First Pin <span style=color:red>Demo Title<>/span>");
     s.SetDescription("This comes to the <b>description</b> of pushpin.");
     s.SetMoreInfoURL("http://dotnetricks.blogspot.com");
     s.SetPhotoURL("http://upload.wikimedia.org/wikipedia/commons/8/8a/Banana-Single.jpg");

     s.SetCustomIcon(customIcon);
     s.SetIconAnchor(new VELatLong(lat, long));
     map.AddShape(s);


 }

我还让我的地图围绕这些图钉之一填充了一个圆圈。它是这样填充的。

     function getCircleNow(lat, long) {

     var latin = lat;
     var lonin = long;
     var latlong = new VELatLong(latin, lonin);
     centerPoint = (latlong);
     //var center = map.GetCenter().toString();
     //alert(center);
     //Get initial circle points
     var circlePoints = buildCircle(centerPoint.Latitude, centerPoint.Longitude, 50.74);
     //Build circle
     circle = new VEShape(VEShapeType.Polygon, circlePoints);
     circle.HideIcon();
     circle.SetLineWidth(2);
     map.AddShape(circle);
     //Build mask
     circleMask = new VEShape(VEShapeType.Polygon, circlePoints);
     circleMask.HideIcon();
     circleMask.Hide();
     circleMask.SetLineColor(new VEColor(0, 0, 0, 0.5));
     circleMask.SetFillColor(new VEColor(0, 0, 0, 0.0));
     circleMask.Primitives[0].symbol.stroke_dashstyle = "Dash";
     map.AddShape(circleMask);


 }

这是它调用的 buildCircle() 函数。

     function buildCircle(latin, lonin, radius) {
     var locs = new Array();
     var lat1 = latin * Math.PI / 180.0;
     var lon1 = lonin * Math.PI / 180.0;
     var d = radius / 3956;
     var x;
     for (x = 0; x <= 360; x += 10) {
         var tc = (x / 90) * Math.PI / 2;
         var lat = Math.asin(Math.sin(lat1) * Math.cos(d) + Math.cos(lat1) * Math.sin(d) * Math.cos(tc));
         lat = 180.0 * lat / Math.PI;
         var lon;
         if (Math.cos(lat1) == 0) {
             lon = lonin; // endpoint a pole
         }
         else {
             lon = ((lon1 - Math.asin(Math.sin(tc) * Math.sin(d) / Math.cos(lat1)) + Math.PI) % (2 * Math.PI)) - Math.PI;
         }
         lon = 180.0 * lon / Math.PI;
         var loc = new VELatLong(lat, lon);
         locs.push(loc);
     }
     return locs;

 }

这是我添加了图钉并填充了地图上的圆圈后的地图,它以其中一个位置为中心,半径为 50 英里。

我的代码填充了什么

我想做什么

我希望能够使用 JavaScript 或 C# 来检测除了以圆圈为中心的图钉之外,还有哪些其他图钉位于中心位置的半径内。或者更简单地说,圆圈中有哪些其他位置/图钉,并用每个地址的值填充列表。我想不出任何可以做到这一点的特殊方法,因此我们将不胜感激。这是我正在使用的 Bing 地图。

4

1 回答 1

1

这很容易做到。取圆的中心点和半径,执行以下操作:

而已。很久以前,我还为 Bing 地图 v6 写了一篇关于此的 MSDN 文章,但它看起来已经下线,以及 Bing 地图 v6.3 的所有文档。

综上所述,值得指出的是,Bing Maps V6.3 确实很旧,最后一次更新大约是 5 或 6 年前。不建议对其进行任何新的开发,而是使用版本 7,它功能更强大,功能更多,下载大小明显更小。我在这里有一个迁移指南:http: //social.technet.microsoft.com/wiki/contents/articles/20958.migrating-bing-maps-v6-3-to-v7.aspx

于 2014-08-12T15:06:27.977 回答