ThinkGeo.com    |     Documentation    |     Premium Support

Issue add pushpin to the map

Hi


I am new to your product and just download the trail version


due to our map is not to scale so i am trying to mark place by








screen coordinate, but it seems dose not work 


 


here is my code:


 


               Map1.MapBackground.BackgroundBrush = new GeoSolidBrush(GeoColor.FromHtml("#B3C6D4"));

                Map1.CurrentExtent= new RectangleShape(-140, 60, 140, -60);

                

                Map1.MapUnit = GeographyUnit.DecimalDegree;



                GdiPlusRasterLayer rasterLayer = new GdiPlusRasterLayer(MapPath("london.png"), new                         RectangleShape(-180, 200, 250, -180));

              

               

                rasterLayer.UpperThreshold = double.MaxValue;

                rasterLayer.LowerThreshold = 0;

           

                

                Map1.StaticOverlay.Layers.Add(rasterLayer);

               

                



                if (!Map1.MarkerOverlay.Features.Contains("Victoria Station"))

                {

                    Map1.MarkerOverlay.Features.Add("Victoria Station", new Feature(10, 10));

                }


 


      looking for the reply


    Thanks a lot


 


Phil



Phil,



In your code, you missed one thing: set style for marker overlay. Please see our installed sample at "Samples/GettingStarted/AddAMarker.aspx". Also the following code does fix your issue, please have a try.

Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageOffsetX = -10.5f;
Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageOffsetY = -25f;
Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageWidth = 21;
Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.ImageHeight = 25;
Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;



Let me know if you have any questions.



Thanks,

Howard

 



Hi Howard


Thanks a lot for your help.


now the pushpin is shown on the map perfectly and also I add a popup window for the it .


but I have another  issue. 


because our map is not to scale so I am trying to add the marker by x,y coordinates of screen rather than latitude and longitude.


 


i am using this piece of code:


         screenX=50;

         screenY = 50;



         PointShape worldCoordinate = Map1.ToWorldCoordinate(screenX, screenY);



          Map1.MarkerOverlay.Features.Clear();

          Map1.MarkerOverlay.Features.Add("marker", new Feature(worldCoordinate));


 


       but the position of the marker is not very accurate.


      Do you have any suggestions?


    Thanks


 


  Phil


  


   


      


    


 


 


 




 












 



Phil,  
  
 I guess the map’s width and height are using percentage such as 100%; in this way, we cannot get the map’s actual width and height correctly on the server side for the first time page loading. Width and height are the key factor to calculate the position converter. 
  
 We can only do the synchronization after the postback so calculate the correct position; so if you add the marker after postback, I think it’ll be fine. 
  
 The only way to fix it currently is set a fixed width and height for the map. 
  
 If I’m misunderstand, please feel free to let me know. 
  
 Thanks, 
 Howard

Hi Howard,


Thanks for your reply


Actually we are using fix width and height to define the map control


the map image we are using is not to scale. is it the reason cause that problem


 


I attached the sample page for your consideration  


 


Thanks


 


Phil


 



1153-test.aspx.txt (1.7 KB)
1151-test.aspx.cs (4.17 KB)

Phil,  
  
 I’m not sure from your description.  
  
 If possible, please send me a simple sample project including *.aspx, *.aspx.cs and data or raster images. If the data is too big please send to support@thinkgeo.com and ask them to forward to me. 
  
 Looking forward your feedback. 
  
 Thanks, 
 Howard

Hi Howard,


I have created a simple project and the size is about 1.5M,


So I send it to support@thinkgeo.com.


if you do not get it, please let me know.


 


Thanks a lot


 


Phil


 


 


 



Phil,



I guess there are several factors to affect the accuracy in your sample. One is the initialize extent whose width and height ratio is different from the map control's; please use this code in your application.
Map1.CurrentExtent = ExtentHelper.GetDrawingExtent(new RectangleShape(-140, 60, 180, -60), 500, 425);


On the other hand, the default position of the marker is on the upper left point. Please set the ImageOffsetX and Y to make the center as you wanted.



The last factor is that may be your image is stretched so that you see it's not in the correct position.



Here is the map after changing the current extent.



Any questions please let me know.



Thanks,

Howard

 



Hi Howard,


 


Thank you very very much for your advice. aslo now I am using World Coordinate rather than screen coordinate and it seems fixed the issue.


your product meet our requirement perfectly.


Thanks agian


 


phil



Phil, 
  
 You are welcome; please feel free to let me know if you have more queries. 
  
 Thanks, 
 Howard