Ejemplo n.º 1
0
    /// <summary>
    /// Initializes a new instance of the <see cref="GeoMap"/> class.
    /// </summary>
    public GeoMap()
    {
        InitializeComponent();
        if (!LiveCharts.IsConfigured)
        {
            LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
        }
        _core = new GeoMap <SkiaSharpDrawingContext>(this);

        PointerPressed      += OnPointerPressed;
        PointerMoved        += OnPointerMoved;
        PointerReleased     += OnPointerReleased;
        PointerWheelChanged += OnWheelChanged;
        PointerExited       += OnPointerExited;

        SizeChanged += GeoMap_SizeChanged;

        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core.Update(),
            true);
        SetValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >());
        SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>());
        SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>());
        SetValue(SyncContextProperty, new object());

        Unloaded += GeoMap_Unloaded;
    }
Ejemplo n.º 2
0
    /// <summary>
    /// Initializes a new instance of the <see cref="GeoMap"/> class.
    /// </summary>
    public GeoMap()
    {
        if (!LiveCharts.IsConfigured)
        {
            LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
        }

        MouseDown  += OnMouseDown;
        MouseMove  += OnMouseMove;
        MouseUp    += OnMouseUp;
        MouseLeave += OnMouseLeave;
        MouseWheel += OnMouseWheel;

        SizeChanged += GeoMap_SizeChanged;

        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        SetCurrentValue(ShapesProperty, Enumerable.Empty <MapShape <SkiaSharpDrawingContext> >());
        SetCurrentValue(SeriesProperty, Enumerable.Empty <IGeoSeries>());
        SetCurrentValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>());
        SetCurrentValue(SyncContextProperty, new object());

        Unloaded += GeoMap_Unloaded;
    }
Ejemplo n.º 3
0
    /// <summary>
    /// Initializes a new instance of the <see cref="GeoMap"/> class.
    /// </summary>
    public GeoMap()
    {
        InitializeComponent();
        if (!LiveCharts.IsConfigured)
        {
            LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
        }
        _core = new GeoMap <SkiaSharpDrawingContext>(this);

        canvas.SkCanvasView.EnableTouchEvents = true;
        canvas.SkCanvasView.Touch            += OnSkCanvasTouched;

        SizeChanged += GeoMap_SizeChanged;

        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        SetValue(ShapesProperty, Enumerable.Empty <IMapElement>());
        SetValue(SeriesProperty, Enumerable.Empty <IGeoSeries>());
        SetValue(ActiveMapProperty, Maps.GetWorldMap <SkiaSharpDrawingContext>());
        SetValue(SyncContextProperty, new object());
    }
Ejemplo n.º 4
0
    /// <summary>
    /// Initializes a new instance of the <see cref="GeoMap"/> class.
    /// </summary>
    public GeoMap()
    {
        InitializeComponent();
        if (!LiveCharts.IsConfigured)
        {
            LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
        }
        _core           = new GeoMap <SkiaSharpDrawingContext>(this);
        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);

        Background = new SolidColorBrush(new Color(0, 0, 0, 0));

        PointerWheelChanged += OnPointerWheelChanged;
        PointerPressed      += OnPointerPressed;
        PointerMoved        += OnPointerMoved;
        PointerLeave        += OnPointerLeave;

        //Shapes = Enumerable.Empty<MapShape<SkiaSharpDrawingContext>>();
        ActiveMap   = Maps.GetWorldMap <SkiaSharpDrawingContext>();
        SyncContext = new object();

        DetachedFromVisualTree += GeoMap_DetachedFromVisualTree;
    }
Ejemplo n.º 5
0
    /// <summary>
    /// Initializes a new instance of the <see cref="GeoMap"/> class.
    /// </summary>
    public GeoMap()
    {
        InitializeComponent();
        if (!LiveCharts.IsConfigured)
        {
            LiveCharts.Configure(LiveChartsSkiaSharp.DefaultPlatformBuilder);
        }
        _activeMap = Maps.GetWorldMap <SkiaSharpDrawingContext>();

        _core           = new GeoMap <SkiaSharpDrawingContext>(this);
        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);

        var c = Controls[0].Controls[0];

        c.MouseDown  += OnMouseDown;
        c.MouseMove  += OnMouseMove;
        c.MouseUp    += OnMouseUp;
        c.MouseLeave += OnMouseLeave;
        c.MouseWheel += OnMouseWheel;

        Resize += GeoMap_Resize;
    }
Ejemplo n.º 6
0
    /// <summary>
    /// Called when the control renders.
    /// </summary>
    /// <param name="firstRender"></param>
    /// <returns></returns>
    /// <exception cref="Exception"></exception>
    protected override async Task OnAfterRenderAsync(bool firstRender)
    {
        if (!firstRender)
        {
            return;
        }

        _core           = new GeoMap <SkiaSharpDrawingContext>(this);
        _shapesObserver = new CollectionDeepObserver <IMapElement>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);
        _seriesObserver = new CollectionDeepObserver <IGeoSeries>(
            (object?sender, NotifyCollectionChangedEventArgs e) => _core?.Update(),
            (object?sender, PropertyChangedEventArgs e) => _core?.Update(),
            true);

        // ToDo: Pointer events.
        //var c = Controls[0].Controls[0];

        //c.MouseDown += OnMouseDown;
        //c.MouseMove += OnMouseMove;
        //c.MouseUp += OnMouseUp;
        //c.MouseLeave += OnMouseLeave;
        //c.MouseWheel += OnMouseWheel;

        //Resize += GeoMap_Resize;

        if (_dom is null)
        {
            _dom = new DomJsInterop(JS);
        }
        var canvasBounds = await _dom.GetBoundingClientRect(_canvasContainer);

        _canvasWidth  = canvasBounds.Width;
        _canvasHeight = canvasBounds.Height;

        _core.Update();

        if (_motionCanvas is null)
        {
            throw new Exception("MotionCanvas not found");
        }
        _jsFlexibleContainer.Resized += OnResized;
    }