我有一张地图,其中填充了数据库中的图钉。和一个圆圈。我希望能够找出VE Shape圆半径内还有哪些其他图钉,并创建其地址列表。
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#来检测哪些其他图钉,除了以圆为中心的图钉之外,它们还位于中心位置的半径内。或更简单地说,圆中还有哪些其他位置/图钉,并使用每个地址的值填充列表。我想不出任何可以执行此操作的特殊方法,因此将不胜感激。这是我正在使用的必应地图。
参考方案
这很容易做到。取圆的中心点和半径执行以下操作:
循环遍历所有图钉并使用Haversine公式测量其距中心点的距离:http://rbrundritt.wordpress.com/2008/10/14/calculate-distance-between-two-coordinates/
如果距离小于或等于圆的半径,则图钉位于圆的内部。
而已。很久以前,我还针对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
当回复有时是一个对象有时是一个数组时,如何在使用改造时解析JSON回复? - java我正在使用Retrofit来获取JSON答复。这是我实施的一部分-@GET("/api/report/list") Observable<Bills> listBill(@Query("employee_id") String employeeID); 而条例草案类是-public static class…
改造正在返回一个空的响应主体 - java我正在尝试使用Retrofit和Gson解析一些JSON。但是,我得到的响应机构是空的。当我尝试从对象中打印信息时,出现NullPointerException。我确保URL正确,并且我也确保POJO也正确。我正在使用jsonschema2pojo来帮助创建POJO类。这是我要解析的JSON{ "?xml": { "@versi…
Math.max和Math.min输出允许的最高和最低值 - java所以我正在尝试制作一个程序,该程序将输出总和,平均值以及最小和最大值。除了最小和最大值输出2147483647和-2147483647,我基本上已经弄清楚了所有东西,我相信这是Java将计算的绝对最小和最大值。无论如何,我想计算用户输入的数字,因此这显然是不正确的。这是我的课。我认为addValue方法出了问题。public class DataSet { …
Math.log无法正常工作-为什么? - java//以下方法无法正常工作,我不确定为什么。日志结果不正确。 0.5返回日志值-0.6931471805599453,但是我的计算器显示它应该返回-3.3。public static void printCommonLogTable() { double x = 0; while (x <= 10) { System.out.println (x+ …
LeetCode题解水壶问题给你一个装满水的 8 升满壶和两个分别是 5 升、3 升的空壶,请想个优雅的办法,使得其中一个水壶恰好装 4 升水,每一步的操作只能是倒空或倒满。题解:``` .js/** * 思路: * 每个容器有两个选择,比如:A,可以倒入B,或者倒入C * 同样,B可以倒入A,也可以倒入C * 那么每次就有8种可能 * * 每产生一种可能,顺着这种可能的结果,继续去遍…