【问题标题】:Gmap.net show only markers within polygonGmap.net 仅显示多边形内的标记
【发布时间】:2020-01-16 15:12:45
【问题描述】:

我目前正在与 gmap.net 一起使用多边形创建一定的半径。我目前已经为半径制作了一个多边形,但现在我遇到的问题是我想创建多个标记,但只显示多边​​形内的标记。这可能吗?

_polygonOverlay = new GMapOverlay("destination");
_gMap.Overlays.Add(_polygonOverlay);

private void CreateCircle(PointLatLng destination, double radius)
    {
        List<PointLatLng> radiusPoint = new List<PointLatLng>();

        double seg = Math.PI * 2 / 40;

        for (int i = 0; i < 40; i++)
        {
            double theta = seg * i;
            double latitude = destination.Lat + Math.Cos(theta) * radius;
            double longitude = destination.Lng + Math.Sin(theta) * radius;

            PointLatLng cirlePoint = new PointLatLng(latitude, longitude);

            radiusPoint.Add(cirlePoint);
        }
        GMapPolygon radiusCircle = new GMapPolygon(radiusPoint, "radius");
        _polygonOverlay.Polygons.Add(radiusCircle);
    }

private void CreateMarkers()
        {
            _polygonOverlay.Markers.Add(new GMarkerGoogle(new PointLatLng(xxx, xxx), GMarkerGoogleType.blue));
            _polygonOverlay.Markers.Add(new GMarkerGoogle(new PointLatLng(xxx, xxx), GMarkerGoogleType.blue));
            _polygonOverlay.Markers.Add(new GMarkerGoogle(new PointLatLng(xxx, xxx), GMarkerGoogleType.blue));
        }

这是我创建一个圆圈的代码的一个小示例(仍然需要一些工作)和一些标记。

已经提前感谢了

【问题讨论】:

  • 添加一些代码。事实上,这个问题太宽泛了。
  • 添加了一些代码我希望这有助于理解

标签: polygon marker gmap.net


【解决方案1】:

由于您正在处理一个圆圈,因此您应该能够简单地检查标记与圆圈中心的距离。如果距离大于半径,则不要将其添加到叠加层中。

GMap 使您可以访问确定此信息的必要方法。做这样的事情:

//Assuming p1 is your marker and p2 is your circle center coordinate
double markerDist = GMap.NET.MapProviders.EmptyProvider.Instance.Projection.GetDistance(p1.Position, p2); 

if(markerDist <= circleRadius)
{
    //Add the marker to the overlay
}

【讨论】:

    【解决方案2】:

    假设您有一个带有一些积分的GMapPolygon,您可以使用

    bool inside = gMapPolygon.IsInside(point)
    

    检查GMarkerpoint 是否在GMapPolygon

    【讨论】:

    • 你能告诉我们更多关于你的解决方案的作用吗?
    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值
    猜你喜欢
    • 1970-01-01
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2013-07-20
    • 2013-08-24
    • 1970-01-01
    相关资源
    最近更新 更多