コード例 #1
0
 /// <summary>Проверяет, пересекаются ли эта область с другой</summary>
 /// <param name="Another">Область, пересечение с которой требуется проверить</param>
 /// <returns>True, если области пересекаются</returns>
 public bool IsIntersects(EarthArea Another)
 {
     return MostEasternLongitude >= Another.MostWesternLongitude
            && MostWesternLongitude <= Another.MostEasternLongitude
            && MostNorthenLatitude >= Another.MostSouthernLatitude
            && MostSouthernLatitude <= Another.MostNorthenLatitude;
 }
コード例 #2
0
 public override bool TestVisual(EarthArea VisibleArea)
 {
     return Position.IsInArea(VisibleArea);
 }
コード例 #3
0
 /// <summary>Проверяет, попадает ли этот элемент в указанную области видимости</summary>
 /// <param name="VisibleArea">Область видимости</param>
 /// <returns>True, если объект может оказаться виден в указанной области</returns>
 public abstract bool TestVisual(EarthArea VisibleArea);
コード例 #4
0
 /// <summary>Проверяет, и при необходимости отрисовывает или скрывает объект с карты</summary>
 /// <param name="Element">Проверяемый объект</param>
 /// <param name="OnArea">Видимая в область карты</param>
 private void CheckVisual(MapElement Element, EarthArea OnArea)
 {
     CheckVisual(Element, Element.TestVisual(OnArea));
 }
コード例 #5
0
 /// <summary>Проверяет, попадает ли точка в заданную прямоугольную область</summary>
 /// <param name="Area">Прямоугольная область</param>
 /// <returns>True, если точка лежит внутри заданной прямоугольной области</returns>
 public bool IsInArea(EarthArea Area)
 {
     return Longitude >= Area.MostWesternLongitude && Longitude <= Area.MostEasternLongitude &&
            Latitude >= Area.MostSouthernLatitude && Latitude <= Area.MostNorthenLatitude;
 }
コード例 #6
0
 protected virtual void OnVisibleAreaChanged(EarthArea NewVisibleArea)
 {
     RefreshObjectsVisuals();
 }
コード例 #7
0
        protected virtual void OnCentralPointChanged(EarthPoint newCentralPoint)
        {
            Point screenCentralPoint = Projector.Project(newCentralPoint, ZoomLevel);
            _globalTransform.X = Math.Round(-screenCentralPoint.X + ActualWidth / 2);
            _globalTransform.Y = Math.Round(-screenCentralPoint.Y + ActualHeight / 2);

            VisibleArea = new EarthArea(
                // Top Left
                Projector.InverseProject(screenCentralPoint + new Vector(-ActualWidth / 2, -ActualHeight / 2), ZoomLevel),
                // Bottom Left
                Projector.InverseProject(screenCentralPoint + new Vector(-ActualWidth / 2, +ActualHeight / 2), ZoomLevel),
                // Top Right
                Projector.InverseProject(screenCentralPoint + new Vector(+ActualWidth / 2, -ActualHeight / 2), ZoomLevel),
                // BottomRight
                Projector.InverseProject(screenCentralPoint + new Vector(+ActualWidth / 2, +ActualHeight / 2), ZoomLevel)
                );

            RefreshTiles();
        }
コード例 #8
0
 public override bool TestVisual(EarthArea VisibleArea)
 {
     return true;
 }
コード例 #9
0
 /// <summary>Проверяет, попадает ли этот элемент в указанную области видимости</summary>
 /// <param name="VisibleArea">Область видимости</param>
 /// <returns>True, если объект может оказаться виден в указанной области</returns>
 public override bool TestVisual(EarthArea VisibleArea)
 {
     return ElementArea.IsIntersects(VisibleArea);
 }
コード例 #10
0
 /// <summary>
 /// Создаёт новый многоточечный объект на карте
 /// </summary>
 /// <param name="Points">Точки, входящие в состав объекта</param>
 public MapPathElement(IList<EarthPoint> Points)
 {
     this.Points = Points;
     ElementArea = new EarthArea(Points.ToArray());
 }