ThinkGeo.com    |     Documentation    |     Premium Support

Map click event doesnot show the CloudPopUp

Hi,


I am trying to display  cloudpopup on mapclick . My map doesnot get updated with click event. Can someone tell me why this is happening? Is there a way to update a map on serverside like Map.refresh / Map.update?


Given below is my code;


  protected void Map1_Click(object sender, MapClickedEventArgs e)

        {

            PointShape clickPosition = e.Position;

            SetCloudPopUp(e);

            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.SimpleColors.BrightYellow);

            



        }



    private static void  SetCloudPopUp( MapClickedEventArgs e )

    {

        CloudPopup popUp ;

        if (Map1.Popups.Count == 0)

        {

            popUp = new CloudPopup("PopUp", e.Position, string.Empty);

            popUp.AutoSize = true;

            popUp.HasCloseButton = true;

            popUp.AutoPan = true;

            Map1.Popups.Add(popUp);

        }

        else

        {

            popUp = (CloudPopup) Map1.Popups["popUp"];

            popUp.Position = e.Position;

        }



        StringBuilder contHtml = new StringBuilder();

        contHtml.Append("")

        .Append("This is a test string")

        .Append("");

        popUp.ContentHtml = contHtml.ToString();

        

    }


Any Ideas?


Thanks in advance.


Prava

  


 


 



protected void Map1_Click(object sender, MapClickedEventArgs e) 
         { 
             PointShape clickPosition = e.Position; 
             SetCloudPopUp(e); 
             Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.SimpleColors.BrightYellow); 
              
  
         } 
  
     private static void  SetCloudPopUp( MapClickedEventArgs e ) 
     { 
         CloudPopup popUp ; 
         if (Map1.Popups.Count == 0) 
         { 
             popUp = new CloudPopup("PopUp", e.Position, string.Empty); 
             popUp.AutoSize = true; 
             popUp.HasCloseButton = true; 
             popUp.AutoPan = true; 
             Map1.Popups.Add(popUp); 
         } 
         else 
         { 
             popUp = (CloudPopup) Map1.Popups["popUp"]; 
             popUp.Position = e.Position; 
         } 
  
         StringBuilder contHtml = new StringBuilder(); 
         contHtml.Append("") 
         .Append("This is a test string") 
         .Append(""); 
         popUp.ContentHtml = contHtml.ToString(); 
          
     } 
  


Hi Prava,


I found two issues in your code:


1. The object Map1 reference is required for the non-static method. So please change "private static void SetCloudPopUp" to "private void SetCloudPopUp".


2. In the method SetCloudPopUp, there are two lines "popUp = new CloudPopup("PopUp", e.Position, string.Empty);" and "popUp = (CloudPopup) Map1.Popups["popUp"]; ", but the id of the popUps are different, please use the same id "PopUp" or "popUp".


It runs fine in my test App after I corrected those two issues. Please have a try.


Thanks,


Johnny



Hi Johny,


 I followed your instructions and modified the code I still am hooked up with same issue. So, to simplify my issue I tried changing  map background color on mouse click. I couldnot succed in this step either.  However on extent changed event my map gets updated with new background color. My assumption here is "On mouse click my map isnot updating I need  to fire some code to update it after mouse cliock". I am using  map as a user control. Given below is my code for mouse click and map extent changed event.


 

C# Code

.........................

 protected void Map1_ExtentChanged(object sender, ThinkGeo.MapSuite.WebEdition.ExtentChangedEventArgs e)

        {

           // Map1.MapBackground.BackgroundBrush= new GeoSolidBrush(GeoColor.SimpleColors.BrightOrange);

        }



        protected void Map1_Click(object sender, MapClickedEventArgs e)

        {

            Map1.MapBackground.BackgroundBrush= new GeoSolidBrush(GeoColor.SimpleColors.BrightYellow);

            //Map1.BackColor = Color.Coral;

            

        }



MarkUp

........................

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Map.ascx.cs" Inherits="MapUControl" %>

<%@ Register assembly="WebEdition" namespace="ThinkGeo.MapSuite.WebEdition" tagprefix="cc1" %>

    <cc1:Map ID="Map1" runat="server"   Height="100%" Width="100%" 

    onclick="Map1_Click" onextentchanged="Map1_ExtentChanged" >

    </cc1:Map>

  


Thanks for pointing out  syntax errors.


Prava



Hi Jhony,


I was able to change  map background color by forcing LayerOverlay to redraw. It would be nice if I could just say Map1.Redraw( ) or Map1.refresh( ) . I still couldnot display  cloudpopup and highlight selected feature. Given below is my code 


 protected void Map1_Click(object sender, MapClickedEventArgs e)

        {

            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.SimpleColors.BrightYellow);

            LayerOverlay myLayer = Map1.CustomOverlays[0] as LayerOverlay;

            myLayer.Redraw();

        }


Thanks,


Prava



Hi Prava,


I tested your code, but all works fine. Now I attached my test App. Please check it out and try again. If you still have problem please let me know.


Thanks,


Johnny



2144-Sample.zip (7.6 KB)

Hi Johnny,


Thank you for creating a test app. I can see that application displays a cloud pop at click point however it is still not changing  map background.  New background  flashes for a second and then it disappears.


 


 protected void Map1_Click(object sender, ThinkGeo.MapSuite.WebEdition.MapClickedEventArgs e)

        {

            PointShape clickPosition = e.Position;

            SetCloudPopUp(e);

            Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.SimpleColors.BrightYellow);

        }

 


Thanks


Prava


 



Hi Prava,


It seems the reason is that the WorldMapKitWmsWebOverlay lays on the Background, but the WorldMapKitWmsWebOverlay is not transparent, so you are unable to see the background. Please refer to our installed sample "SetBackgroundColor" in "..\Samples\GettingStarted\SetBackgroundColor.aspx" for detail.


Thanks,


Johnny



Hi Johnny,


I followed  "How do I C#" samples and verified  stack order of map  layers  and their opacity value, everything looks fine and matches the sample application.  


On Click event my map is supposed to change its background and display  features found within the bounding box of clicked position in a Dropdownbox.   Dropdownbox is filled with records as expected but map background doesnot change, It flashes for a second and then disappears. However after the second click which causes the asynchronous post back map sets its background to green. Its kind of strange. Can you tell me why this is happening and how can I update my map .


Thanks


Prava



Hi Prava,


Very sorry for the delay. It seems that there are some problems in your code. Would you please provide us a simple sample? It will be very helpful for us.


Thanks,


Johnny