ThinkGeo.com    |     Documentation    |     Premium Support

Ajax on the client side question

Hi,


I am building an application that is using Ajax (.Net) but I have issues around the client scripting...    I have a  button linked with an Ajax


call to the server. and it is working just fine.  when I return from tne server i want to be able to generate an action on the client side but I do not feel confortable with the API  (openLayer / Javascript) could you give me an idea on how to for instance update a specific layer or overlay based on what the server is sending back to the client..


 


 


 


 


 


 


 



<head id="Head1" runat="server">
    <title></title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
    <meta http-equiv="X-UA-Compatible" content="IE=9">
    <link href="~/Styles/MyStyle.css" rel="stylesheet" type="text/css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
    <script type="text/javascript" language="javascript">

        var OnMapCreating = function (map) {

        }

        var OnMapCreated = function (map) {

        } 

       function AjaxCall(arg) {
            var context = Map1;
            WebForm_DoCallback('__Page', arg, AjaxResult, Map1, null, false);
        }

        function AjaxResult(result, context) {

            if (result = "REDRAW_LAYEROVERLAY") {
                var map = Map1.GetOpenLayersMap();
                map.getLayer("layerOverlay").redraw(true);
            }
            else {
                var map = Map1.GetOpenLayersMap();
                map.addLayer(format.read(new OpenLayers.Format.WKT()));
            }
            
            
                        
        }       
    </script>
</head>
<body>
    
        <img src="theme/default/img/loading.gif" alt="loading..." hidden="hidden" />
    
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    
        <asp:UpdatePanel ID="CmdArearadius" runat="server" UpdateMode="Conditional">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Button1" />
            
            <ContentTemplate>
                <fieldset>
                    <legend>CenterScreen</legend>
                    <asp:Button ID="Button1" runat="server" Text="Location" OnClientClick="AjaxCall('LOCATION')"
                        CommandArgument="LOCATION" CommandName="SET" />
                    <legend>Get Active Customers</legend>
                    <asp:Button ID="Button2" runat="server" Text="Customers" OnClientClick="AjaxCall('ACTIVE_CUSTOMERS')"
                        CommandArgument="ACTIVE_CUSTOMERS" CommandName="GET" />
                </fieldset>
            </ContentTemplate>
        </asp:UpdatePanel>
    
    <cc1:Map ID="Map1" runat="server" OnClick="Map1_Click" Height="800px" Width="800px" MapUnit="DecimalDegree" OnClientDoubleClick="getLocation">
    </cc1:Map>
    </form>
</body>
</html>


Hi, 
  
 I was able to find how to use Ajax to update client side map overlays when required. 
  
 thx

Hi Jean-marie, 
  
 Sorry we haven’t reply your post quickly. 
  
 I am glad to hear you implement update client map overlays via Ajax, and in this post (gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/9971/afv/topic/Default.aspx) I upload a sample 001_InteractWithMapPoints.zip which shows a way interactive between client side and server side by callback. 
  
 Regards, 
  
 Don

Hi Don, 
  
 Thanks a lot for your sample!!!  Could you tell me in short (of course) where the Thinkgeo Client API start and Stop compared with the OpenLayers API?  I find very hard to know how to call the client API… 
  
 When using Ajax between client and server how on the server side should the process work?  I mean that the .Net part of the Map engine has to be resynchronized based on what the client bounding box is all about at this point in time by one mean or another???   
  
 On the same subject how a FeatureLayer behave when everything is Ajax based???  should we call the server when the extent is changed and then propagate the new bounding box to the FeatureLayer??? when the client is posted back then a simple map.getLayer("OVERLAY").redraw(true) to update the client??? 
  
 I think that the client side technology could required a good webinard / class… 
  
 thanks a lot. 
  
 jm 
  


Another Question 
  
 Is it possible to refresh only a specific layer within an overlay on the client side??? 
  
 thanks 
  
 jm

Hi Jean-marie, 
  
 Thanks for your post. 
  
 In fact your first question confused me, I am not sure whether you are asking how webedition synchronous between client side and server side, if so I think maybe our web guys can reply you after their vacation. 
  
 And you know our overlay is a "layer" of openlayers in client side, I think you can find a way to refresh specified layer, but add single layer to a overlay then refresh the "layer" is simpler. 
  
 I found some related posts, maybe helpful. 
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/5326/afv/topic/Default.aspx 
 gis.thinkgeo.com/Support/DiscussionForums/tabid/143/aff/12/aft/5469/afv/topic/Default.aspx 
  
 Regards, 
  
 Don