ThinkGeo.com    |     Documentation    |     Premium Support

Map suite Web Edition in an update Panel

 Hi,


I have the latest version of Map Suite Web Edition and have noted some odd behavior with tiles not rendering correctly. I’m using the sample data stored locally as the source of the maps. When placed outside of the update panel there is no issue but the full postback occurs then on zooming.


Sometimes I have noted that the control renders as a narrow blue line also


I may be missing something here as I’m only starting development,


It’s a Visual Studio 2010 project on Dot Net 4.0 using standard Web forms


Any ideas


Rgds,


Liam



i had a different issue which made full postback in this map 

you should do 3 things to solve this (atlist that what solved this issue for me) 

1.




add xhtmlConformance mode="Transitional"  <xhtmlconformance mode="Transitional"></xhtmlconformance> inside system.web to your webconfig 

2.


if you are using 

enableViewState="false" like me , then enable it for the map page 

3.  

if you are also using  clientIDMode="Static" like me 

then use ClientIDMode="AutoID" on the map component 



if you have any farther issues , ask the thinkgeo support xD  

but that what solved it for me


 



Liam, 
  
 In fact, we have lots of samples using UpdatePanel that work well in vs 2010 and vs 2008. I suggest that you first off give a try to our installed sample, such as "Samles\GettingStarted\AddAClickEvent.aspx". 
  
 Also thank you, Arik, for your information about this problem. 
 If you still have problems about it, please let me know. 
  
 Thanks, 
  
 Khalil

Thanks Khalil and Arik.  
  
 I will try your suggestions today and let you know the outcome 
  
 Liam

Liam, 
  
 Thanks for you feedback. I look forward to your outcome for this problem. 
  
 Thanks, 
  
 Khalil


Hi Khalil,
 
All seems ok now wrt the earlier query [map working fine in an update panel] but I do have another issue that may be related.
 
I have 3 groups of items to display in a part of our application that managed vehicles
 
Layer 1. Customer Address [mostly static]
Layer 2. Location of Customer Assets within the Customer Addres. [mostly static]
Layer 3. Location of Vehicle [and optionally the historical location of the selected vehicle]
 
All works fine with markers for all 3 layers displaying fine. 
Location of the truck is manually fired by the click event of a button on the web page at the minute while I'm developing the application.
 
Layers 1 and 2 with the loaded with the relevant markers at page load.
 
When I get the location of the truck it works fine.
 
But when I add a new FeatureSourceColumn i get the following error
 
Microsoft JScript compilation error: Syntax error
 
In debug it stops at this point
OpenLayers.Ajax.Responders.dispatch('on'+state,this,response)
 
Development machine = XP SP3 using Visual Studio 2010 and IE7
WebEdition is 4.0.40.0
MapSuiteCore.dll is 4.0.40.0
 
 
Just to be clear though.
CreateVehicleLayer() below is run on page load but the error does not occur until UpdateMapButton_Click is run.
I have cut out any unnecessary code in UpdateMapButton_Click even to the point where  I'm not adding any column values
 
 
Here is a snap shot of the code. [Its based on your samples]
 
        private void CreateVehicleLayer()
        {
            InMemoryMarkerOverlay vehicleOverlay = new InMemoryMarkerOverlay("Vehicles");
            vehicleOverlay.FeatureSource.Open();
 
            vehicleOverlay.Columns.Add(new FeatureSourceColumn("Status", "string", 50));
            //vehicleOverlay.Columns.Add(new FeatureSourceColumn("Status"));
            vehicleOverlay.FeatureSource.Close();
 
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.ContentHtml = "Truck A";
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.HasCloseButton = true;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Width = 100;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.Height = 30;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BackgroundColor = GeoColor.StandardColors.LightBlue;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderColor = GeoColor.StandardColors.Black;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.Popup.BorderWidth = 1;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageOffsetX = -10.5f;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageOffsetY = -25f;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageWidth = 21;
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageHeight = 25;
 
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("../i/RubbishTruck.jpg", 21, 25);
            // Make it available all over the zoomlevels.
            vehicleOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
            vehicleOverlay.IsVisibleInOverlaySwitcher = true;
            this.Map1.CustomOverlays.Add(vehicleOverlay);
        }



        protected void UpdateMapButton_Click(object sender, EventArgs e)


        {


              InMemoryMarkerOverlay vehicleOverlay = (InMemoryMarkerOverlay)Map1.CustomOverlays["Vehicles"];


 


Feature vehFeature = new Feature(vehicle.GPSLocation.Longitude, vehicle.GPSLocation.Latitude);


// vehFeature.ColumnValues.Add("Status", "F");


// vehFeature.ColumnValues.Add("Status", "F");


// vehFeature.ColumnValues.Add("FeatureId", feature1.Id);


// vehFeature.ColumnValues.Add("PopupInfo", "Lat = " + vehicle.GPSLocation.Longitude.ToString());


 


vehicleOverlay.Features.Add(vehicle.Name, vehFeature);


// Force the Map panel to update


this.MapUpdatePanel.Update();



}



I'm aiming to attach information to the marker to make it available for a popup and context menus on the marker.


 


 


Rgds,


Liam



Hi,  
  
 I get similar problems when enabling the following in Page Load. Not sure if thats relevant. 
  
 Map1.MapTools.MeasureMapTool.Enabled = true; 
 Map1.MapTools.AnimationPanMapTool.Enabled = true; 
  
 Liam

I have taken the map outside of the update panel and the JScript error remains

Liam,


I have tried all the scenarios you have mentioned in the latest posts with your codes, and I also can't recreate your problem. So please check out the codes I used.


If you find any problems about that please let me know. I am looking forward to your feedback. 


Also if you still can't get it work and please send us the codes you are usign so that we can address it quickly.


Khalil



DisplayASimpleMap.zip (2.45 KB)

Hi Khalil, 



Thank you for your response. I will continue to investigate but I have it working on a very basic using the constructor to add the featuresourcecolumn. I'm not convinced that this is the root cause at all anyway to be honest. It may be an intermittent issue and at one stage I suspected that the cache may have been causing the problem. It just seemed to start working.



BTW. I'm using both AJAX and JQuery in the aspx page and I should have included that detail in my original post. [It may be relevant] 



List<featuresourcecolumn> fsc = new List<featuresourcecolumn>(); 

fsc.Add(new FeatureSourceColumn("Status111", "string", 50)); 



InMemoryMarkerOverlay vehicleOverlay = new InMemoryMarkerOverlay("Vehicles", fsc); 



At the minute I have not an explanation as to what has happened and have done the usual reboots etc to rule any systems issue out. Its now working using the above method and I'll try and break it again to get some further insight. :) 



On a quick inspection your attached code is more or less the same approach as my original so I assume that I was on the right track. 



Will keep you updated. 

Thanks again. 



Rgds, 

Liam</featuresourcecolumn></featuresourcecolumn>



Hi Khalil,  
  
 The issue has returned. It was fine for 4-6 hours. It seems to be intermittent in some way and I really only been using standard features of the control so it is a bit confusing as to what the issue is. 
  
 I have spent a while trying to see if its an IIS issue and have done the standard steps, Restart PC , restart IIS [numerous times following config changes], used both the ASP.Net Development server and the Local IIS server, cleared the cache and numerous other smaller steps in order to resolve the issue but to no avail. 
  
 I have tested your code and it works fine. My code has not really got much extra in terms of whats being done and is more or less the same as what was originally posted. 
  
 Have you any suggestions on how to proceed from here or are you aware of any intermittent OpenLayer issues. 
  
 [It could still be environmental on my side so I’ll keep digging for now but I would hope to get this resolved ASAP] 
  
 Rgds, 
 Liam

Hi, Liam 
  
 Can you tell me the test results and the exception messages of your web application on your local VS ASP.NET Development server and IIS? If the error is the same as before, please provide us the screenshot for it? 
  
 I guess the problem is caused by that you are using InMemoryMarkerOverlay mixed with Ajax and JQuery and some unexpected conflicts occur. I suggest that you change your codes to use SimpleMarkerOverlay and to see whether the problem still occurs. 
  
 Thanks, 
  
 Khalil

 Hi Khalil, 


 
Thanks, I will try what you suggested and if that works may need to follow up on what impact that will have.
 
The error is the same using local IIS and the ASP.Net Development server. 
When accessing the page from another browser on another page the script error is ignored and the marker does not appear in the screen so the issue also appears there also. [It just does not stop on the error].#
From that observation it does not appear to be a browser or debugger issue either.
 
Screen shot attached - debugger stops at the last bracket in the lower right corner [Highlighted by VS in yellow]. 

 
The error is as originally posted.
 
I'll update you later on any other observations
 
Rgds,
Liam

Hi Khalil,  



I have changed the InMemoryMarkerOverlay to a SimpleMarkerOverlay and the issue seems to be gone. I'm not sure if this however is the answer but hopefully it may point to where the issue lies. The issue is intermittent so I will not be sure for a while if the issue is really gone. 



Given that my initial assumption was to use the InMemoryMarkerOverlay due to the fact that I will be displaying vehicles and very regularly updating their position along with 2 other layers of mostly static data, I would have some concerns over performance. [Hard to tell at this stage of development as the exact implementation details need to be finalized but there could be > 1000 markers on the map at any time]. 



I'm assuming that we can resolve the InMemoryMarkerOverlay issue but in the event that we can't I will need further detail on what functionality and/or performance features are lost.


i.e. FeatureSource is not available on the SimpleMarkerOverLay which we need for custom data




BTW: For the InMemoryMarkerOverlay issue I had disabled JQuery during testing and the issue remained.


I also tried using FeatureSourceMarkerOverlay but I get the same Microsoft JScript compilation Error



Rgds, 

Liam. 



Hi, Liam


Thanks for your feedback for this post. From your screenshot I have known where your error occurs. 

First off I think you need to know why we need these two MarkerOverlays. For the InMemoryMarkerOvelay, and it uses asynchronous mode. It will get the json dataof markers in the background and add them to map using Ajax, also just you have mentioned, and the FeatureSource is available so you can used it to bind custom data on the marker or its popup. But for SimpleMarkerOverlay, and it uses synchronous mode, and the markes will be reloaded every postback event occurs.


Here is one solution for you and  I guess that you need to give it a try. I am not sure whether it can solve your problem. Please attach the codes in the attachment into your web app. I look forward to your feedback. Hopt it can help you.


Thanks,


Khalil



RespondToReadyState.zip (663 Bytes)

 Hi Khalil,


Thanks for the info and the clarification on the differences between the layers.


Apologies for the late response.


I have attached the script and the error now appears in the new script function that you sent.. The icon does not display on the map as expected either following the error message.


No other errors appear after the one below.


 



 


 


Rgds,


Liam


 



Liam,



Sorry for delay response. I guess we have found the problem here. But I can't figure out why this error occurs. There are many reasons caused it.

So I need to know the value of  "state", and just as I have mentioned in the last post,  if the state is "complete", and then the callback function will be triggered.

I suggest you add a breakpoint at the position showed as the screenshot below and then when the state is "complete", and then you press F11 step into the callback function and you will understand what I mean.



If this problem still exist,  please send us a simple sample solution and we can directly run it and recreate the problem, so that we can figure out why.


Thanks,


Khalil



Liam, 
  
 If you would like to, we can have a GotoMeeting so I can have a detailed review on your environment, which I think would be much helpful. 
  
 Thanks, 
  
 Khalil

 Hi Khalil,


A go to meeting would be good. Can it be done today, if so please email me with the details.


We may be able to resolve both issues then.


I have checked the value of the state variable and it is set to complete.


Wen I step into the callback function no other errors occur but the icon marker does not appear on the screen.


We are 5 or 6 hours ahead of you [unsure of DST in Texas] so any time if possible between 3 and 6 GMT would be good. If there are problems with that let me know.


 



 


 


Rgds,


Liam


 



Hi Khalil, 
  
 Do you have any update on this? 
  
 Rgds, 
 Liam