ThinkGeo.com    |     Documentation    |     Premium Support

Markers loading issue

 InMemoryMarkerOverlay markerOverlay;                  


DataSet  ds = BMSIBL.WorkOrderBase.GetWorkOrderassetMapData(assetqry, pCompanyID);//iam getting 5000 recors from database
                         for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
                        {
                                string pid = ds.Tables[0].Rows["AssetID"].ToString();

 


                                pplat = Convert.ToDouble(ds.Tables[0].Rows["LocStartLatitude"].ToString());

  


                                pplong = Convert.ToDouble(ds.Tables[0].Rows["LocStartLongitude"].ToString());

 
                                markerOverlay.Features.Add(pid, new Feature(pplong, pplat));
                               Map1.CustomOverlays.Add(markerOverlay);
                       } 
this is  my code.from my databse iam getting 3000 to 5000 records with latitude and longitude values .based on lat and long values iam adding markers on the Google Map.for adding 5000 markers on the map it is taking more time and it thrown error like pagerequest timeout is expired.so how to load markers quickly.please check that code any thing iam wrong here.is it possible to add all markers at a time.


 


 Is It possible to add multiple markers at a time so that we can increase the performance of map.please give a solution to inprove my map application.



 


Hi Rajanikanth,
Thanks for the post, and I found a problem in the code, please don’t use one markerOverlay for each row record, please move it to the outside of the loop and make sure all the records share only 1 MarkerOverlay, which will improve the performance a lot.
Additionally, I guess there are 2 other options that we can try here to improve the performance:
1.       Use the ClusterMarkerStyle to decrease the number of the markers and the size of the Marker data passed to the client side. The filter markers will display again when you zoom in a bit.
Following is the demo code:
 
                ClusterMarkerStyle clusterMarkerStyle = new ClusterMarkerStyle(20, Map1.WidthInPixels, Map1.HeightInPixels);
                clusterMarkerStyle.MarkerStyle = classBreakStyle;
 
                markerOverlay.ZoomLevelSet.ZoomLevel01.CustomMarkerStyle = clusterMarkerStyle;
                markerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level10;
 
2.       Display these markers  as a static image using InMemoryFeatureLayer
3.       Using client OpenLayers.Layer.Vector to display these features , it will improve the performance a lot, but need lots of JS script.
In my opinion, I prefer the first one, it’s simple and most efficient, please have a try and let me know if it fits your requirements.
 
Thanks,
Johnny

 can u provide some sort of code for 1st method and inmemoryfeture layer method.by using inmemory feture layer can we diplay all markers at atime is it possible



 Hi rajanikanth,


Please check the demo attached. It's hard to say it's possible to diplay all more than 5000 markers at a time now, it depends the some properties of the ClusterMarkerStyle, anyway, can you try the demo at first and any question or issues, please feel free to let us know.


 


Thanks,


Johnny



002_001_ClusterMarkerStyle.zip (2.21 KB)

 Is it possible diplay Different marker images by using InMemoryFeatureLayer .can u tell me how to use InMemoryFeatureLayer for diaplyaing markers on the map.So that we can diplay different marker images on the map.



Hi Rajanikanth, 
  
 Seems like the same question are at gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/11079/afv/topic/Default.aspx , please check the anwser there. 
  
 Thanks, 
 Johnny