我正在使用Bing地图在地图上显示标记。
现在我添加了一个功能,我允许用户在他选择的任何标记周围绘制一个圆圈,并让他指定以公里为单位的圆的半径。
我希望圆(多边形)包含该圆的纬度/经度范围内的标记以及圆外的标记消失。
我如何实现这一目标?
答案 0 :(得分:0)
您没有提供任何代码。
然而,我参与了一个类似的项目,所以我知道你在说什么。 您正在寻找自定义多边形,您可以查看此link。
另一种方法是使用标记的x,y坐标,并使用Javascript在地图上绘制圆圈。
这个JAVASCRIPT应该帮助
function drawCircle(radius, origin) {
var RadPerDeg = Math.PI / 180;
var earthRadius = 3959;
var lat = origin.latitude * RadPerDeg;
var lon = origin.longitude * RadPerDeg;
var locs = new Array();
var AngDist = parseFloat(radius) / earthRadius;
for (x = 0; x <= 360; x++) { //making a 360-sided polygon
var pLatitude, pLongitude;
// With a nice, flat earth we could just say p2.Longitude = lon * sin(brng) and p2.Latitude = lat * cos(brng)
// But it ain't, so we can't. See http://www.movable-type.co.uk/scripts/latlong.html
brng = x * RadPerDeg;
pLatitude = Math.asin(Math.sin(lat) * Math.cos(AngDist) + Math.cos(lat) * Math.sin(AngDist) * Math.cos(brng)); //still in radians
pLongitude = lon + Math.atan2(Math.sin(brng) * Math.sin(AngDist) * Math.cos(lat), Math.cos(AngDist) - Math.sin(lat) * Math.sin(pLatitude));
pLatitude = pLatitude / RadPerDeg;
pLongitude = pLongitude / RadPerDeg;
locs.push(new MM.Location(pLatitude, pLongitude));
};
circle = new MM.Polyline(locs, { visible: true, strokeThickness: 2, strokeDashArray: "1", strokeColor: new MM.Color(200, 0, 0, 200, 0) });
map.entities.push(circle);
};