Пример #1
0
        public virtual ITrackerFeature GetTrackerAtCoordinate(ICoordinate worldPos)
        {
            for (int i = 0; i < trackers.Count; i++)
            {
                ITrackerFeature trackerFeature = trackers[i];

                ICoordinate size;

                if (null != trackerFeature.Bitmap)
                {
                    size = CoordinateConverter.ImageToWorld(trackerFeature.Bitmap.Width, trackerFeature.Bitmap.Height);
                }
                else
                {
                    // hack for RegularGridCoverageLayer
                    size = CoordinateConverter.ImageToWorld(6, 6);
                }
                IEnvelope boundingBox = MapControlHelper.GetEnvelope(worldPos, size.X, size.Y);

                if (trackerFeature.Geometry.EnvelopeInternal.Intersects(boundingBox))
                {
                    return(trackerFeature);
                }
            }
            return(null);
        }
Пример #2
0
        public override ITrackerFeature GetTrackerAtCoordinate(ICoordinate worldPos)
        {
            ITrackerFeature trackerFeature = base.GetTrackerAtCoordinate(worldPos);

            if (null == trackerFeature)
            {
                ICoordinate org   = CoordinateConverter.ImageToWorld(new PointF(0, 0));
                ICoordinate range = CoordinateConverter.ImageToWorld(new PointF(6, 6)); // todo make attribute
                if (SourceFeature.Geometry.Distance(GeometryFactory.CreatePoint(worldPos)) < Math.Abs(range.X - org.X))
                {
                    return(AllTracker);
                }
            }
            return(trackerFeature);
        }