2017-03-16 1 views
0

Je travaille actuellement avec gmap.net pour créer un certain rayon avec un polygone. J'ai actuellement fait un polygone pour le rayon mais maintenant je viens au problème que je veux créer des marqueurs de multipule mais montrer seulement les marqueurs qui sont à l'intérieur du polygone. Est-ce possible?Gmap.net ne montre que des marqueurs dans le polygone

_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)); 
     } 

Voici un petit échantillon du code je que créer un cercle (il reste encore un peu de travail sur lui) et quelques marqueurs.

Déjà merci est l'avance

+0

Ajoutez du code. En l'état, cette question est trop large. –

+0

Ajouté du code J'espère que cela aide à comprendre – MrAndre

Répondre

0

Puisque vous avez affaire à un cercle, vous devriez être en mesure de vérifier simplement la distance de votre marqueur du centre du cercle. Si la distance est supérieure au rayon, ne l'ajoutez pas à la superposition. GMap vous donne accès aux méthodes nécessaires pour déterminer cette information.

Faites quelque chose comme ceci:

//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 
}