Я использую GMap.net с порвидером OpenStreetMap для создания маршрута между двумя маркерами.Есть ли какие-то способы понять, содержит ли маршрут _route маркер TargetPoint или нет?Или было бы лучше сделать то же самое с MapRoute объектами, расположенными в списке traces .
Вот мир моего кода:
public partial class Routes : Form
{
internal readonly GMapOverlay _objects = new GMapOverlay("objects");
GMapRoute _route = new GMapRoute("NewRoute");
List<MapRoute> traces = new List<MapRoute>();
PointLatLng TargetPoint = new PointLatLng(59.9362361841233, 30.3181350231171);
public Routes()
{
InitializeComponent();
gMapControl.MapProvider = GMapProviders.OpenStreetMap;
gMapControl.Manager.Mode = AccessMode.ServerAndCache;
//center map on moscow
gMapControl.Position = new PointLatLng(59.939095, 30.315868);
gMapControl.MaxZoom = 40;
gMapControl.Zoom = 16;
gMapControl.Overlays.Add(_objects);
_objects.Markers.Add(new GMarkerGoogle(new PointLatLng(59.9375314747945, 30.312352180481), GMarkerGoogleType.green_small));
_objects.Markers.Add(new GMarkerGoogle(new PointLatLng(59.9367306579015, 30.3139400482178), GMarkerGoogleType.green_small));
foreach (var marker in _objects.Markers)
_halts.Add(marker.Position);
InitRoute();
}
private void InitRoute()
{
RoutingProvider rp = gMapControl.MapProvider as RoutingProvider;
rp = GMapProviders.OpenStreetMapRivc; // use OpenStreetMap if provider does not implement routing
for (int i = 0; i < _halts.Count - 1; i++)
{
MapRoute route = rp.GetRoute(_halts[i], _halts[i + 1], false, false, (int) gMapControl.Zoom, true);
traces.Add(route);
}
_route.IsHitTestVisible = true;
foreach (var trace in traces)
_route.Points.AddRange(trace.Points.Where(x => !_route.Points.Contains(x)));
_objects.Routes.Add(_route);
gMapControl.ZoomAndCenterRoute(_route);
}
Заранее спасибо!