Example #1
0
        /// <summary>
        /// Populates a <see cref="T:System.Runtime.Serialization.SerializationInfo"/> with the data needed to serialize the target object.
        /// </summary>
        /// <param name="info">The <see cref="T:System.Runtime.Serialization.SerializationInfo"/> to populate with data.</param>
        /// <param name="context">The destination (see <see cref="T:System.Runtime.Serialization.StreamingContext"/>) for this serialization.</param>
        /// <exception cref="T:System.Security.SecurityException">
        /// The caller does not have the required permission.
        /// </exception>
        public void GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("Id", this.Id);
            info.AddValue("IsVisible", this.IsVisibile);

            GMapMarker[] markerArray = new GMapMarker[this.Markers.Count];
            this.Markers.CopyTo(markerArray, 0);
            info.AddValue("Markers", markerArray);

            GMapRoute[] routeArray = new GMapRoute[this.Routes.Count];
            this.Routes.CopyTo(routeArray, 0);
            info.AddValue("Routes", routeArray);

            GMapPolygon[] polygonArray = new GMapPolygon[this.Polygons.Count];
            this.Polygons.CopyTo(polygonArray, 0);
            info.AddValue("Polygons", polygonArray);
        }
        void RegeneratePolygon()
        {
            List<PointLatLng> polygonPoints = new List<PointLatLng>();

            foreach (GMapMarker m in gmap.Markers)
            {
                if (m is GMapMarkerRect)
                {
                    m.Tag = polygonPoints.Count;
                    polygonPoints.Add(m.Position);
                }
            }

            if (polygon == null)
            {
                polygon = new GMapPolygon(polygonPoints  /*, "polygon test" */);
                polygon.IsHitTestVisible = true;
                polygons.Polygons.Add(polygon);
            }
            else
            {
                polygon.Points.Clear();
                polygon.Points.AddRange(polygonPoints);

                if (polygons.Polygons.Count == 0)
                {
                    polygons.Polygons.Add(polygon);
                }
                else
                {
                    gmap.UpdatePolygonLocalPosition(polygon);
                }
            }
        }