Проверьте, содержит ли маршрут точку с определенными координатами - PullRequest
0 голосов
/ 21 сентября 2018


Я использую 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);
    }

Заранее спасибо!

...