ThinkGeo.com    |     Documentation    |     Premium Support

MapCtrl.MarkerOverlay

Hi ,


 I'm trying the map suite web edition (MapSuite.Core4.5.0, WebEdition4.5.0), and i'm facing difficulties in the markers implementation. I've modified the samples (that usually works with SimpleMarkerOverlay), and i'm adding features directly in the Map.MarkerOverlay, but sometimes the autorefresh don't work.


this code is in the load event inside an If (!Page.IsPostBack): 
 Map1.MarkerOverlay.AutoRefreshInterval = TimeSpan.FromMilliseconds(500);//     
                Map1.MarkerOverlay.Tick += new EventHandler<EventArgs>(markerOverlay_Tick);//                
                WebImage imgMark = new WebImage("Imagenes/PointerGreen.png");//
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = imgMark;
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Width = 100;
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Height = 20;
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.IsVisible = false;
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.AutoPan = true;                
                Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
                Map1.MarkerOverlay.FeatureSource.Open();
                Map1.MarkerOverlay.Columns.Add(new FeatureSourceColumn("posId"));
                Map1.MarkerOverlay.FeatureSource.Close();
                Map1.MarkerOverlay.Features.Add("mark", mark);             


and this is my tick_handler code:

con = Convert.ToInt32(hdnFld.Value);
            lstPos = objPos.SelectAllPositions(1, Convert.ToDateTime("2010-12-20 17:03:00"), Convert.ToDateTime("2011-01-05 18:43:00")); 
if (!posLoaded)
            {
                foreach (PositionsInfo posInf in lstPos)
                {
                    updaterPoints.Add(new PointShape(posInf.Longitude, posInf.Latitude));
                }
                posLoaded = true;
            }
            InMemoryMarkerOverlay markOverlay = Map1.MarkerOverlay;
            PointShape markers = (PointShape)markOverlay.Features["mark"].GetShape();
            markOverlay.Features["mark"].ColumnValues["posId"] = lstPos[con].PositionId.ToString();
            if (htmlMarcadores == null)
            {
                htmlMarcadores.Append(popupContent.Value);
            }
            htmlMar.Append(htmlMarcadores);
            htmlMar.Append(lstPos[con].PositionId.ToString());
            htmlMar.Append("");
            markOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.ContentHtml = htmlMar.ToString();
            htmlMar.Clear();
            markers = updaterPoints[con];++con;
            hdnFld.Value = con.ToString();


And finally i've forced the event using this intruction in the page.Load event(because it didn't auto-refresh):

 markerOverlay_Tick(Map1.MarkerOverlay, new EventArgs());


So, i'm wrong and should use an InMemoryMarkerOverlay instead the Map.MarkerOverlay?(and now it isn't autorefreshing again!)


 



Well…i’ve tryied with the InMemoryMarkerOverlay with same result…any idea about what i’m doing wrong? The line forcing MarkerOverlay_Tick only works the first time :( and when i comment it the overlay don’t refresh…

Hi Wilmer, 
  
 Currently, we only support tick events for Map.DynamicOverlay, Map.StaticOverlay or overlays in Map.CustomOverlays. 
  
 We have enhanced web edition to support tick event for Map.MarkerOverlay, please get the latest build (4.5.129.0 or later) to have another try. 
  
 Regards, 
 Ivan

Hi, Ivan. 
 Yesterday i downloaded the lastes builds available(4.5.129.0 and 4.5.0.129) i’ve tried both but the tick event stills not firing up. I make work the markers update but using a Timer and it’s tick event, as it is implemented in the sample called “post4905” that i found in the forums. Can you please point me to a sample where the markers update be made using the InMemoryMarkerOverlay or the Map.MarkerOverlay AutoRefresh feature? Or does that only works for the overlays that you mentioned in your post?Or maybe i’m missing something? 
 Thanks for your help.

Hi Wilmer, 


Here are answers for your questions:


1.  Can you please point me to a sample where the markers update be made using the InMemoryMarkerOverlay or the Map.MarkerOverlay AutoRefresh feature?


We used web edition 4.5.129.0 to test the following code (modified from "Sample/NewFeatures/MarkerOverlay AutoRefresh", the tick event got fired. Please have another try and let us know if you have any questions.


protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#E5E3DF"));
        Map1.CurrentExtent = new RectangleShape(-95.31105, 38.98184, -95.20359, 38.92185);
        Map1.MapUnit = GeographyUnit.DecimalDegree;

        WorldMapKitWmsWebOverlay overlay = new WorldMapKitWmsWebOverlay();
        Map1.CustomOverlays.Add(overlay);

        Map1.MarkerOverlay.AutoRefreshInterval = TimeSpan.FromMilliseconds(5000);
        Map1.MarkerOverlay.Tick += new EventHandler<EventArgs>(markerOverlay_Tick);

        InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay();
        markerOverlay.Tick += new EventHandler<EventArgs>(markerOverlay_Tick);
        markerOverlay.AutoRefreshInterval = TimeSpan.FromMilliseconds(3000);
        Map1.CustomOverlays.Add(markerOverlay);
    }
}

private void markerOverlay_Tick(object sender, EventArgs e)
{
}


2. Or does that only works for the overlays that you mentioned in your post?Or maybe i'm missing something? 


In web edition 4.5.129.0 or later, we support tick events for Map.MarkerOverlay, Map.DynamicOverlay, Map.StaticOverlay or overlays in Map.CustomOverlays.


Regards,


Ivan


 



Hi Ivan. 
 Thanks for your response it was very helpful (as usual with you ThinkGeo Team ;) ), yes it works. My bad, the error is in another method called in the Page.Load, if i comment the line the tick event fires. 
 Sorry fot bother you.

Hi Wilmer, 
  
 You are welcome. Please feel free to ask us any questions while using ThinkGeo products, we will do our best to assist you. 
  
 Regards, 
  
 Ivan