ThinkGeo.com    |     Documentation    |     Premium Support

Add Markers with lables

Hi, I am trying to add markers with lables using SimpleMarkerOverlay class.  This is the code that I add markers on map. 


private void AddSimpleVehicleMarkers()


        {


          int rid = Convert.ToInt32(Request.QueryString["rid"]);


          int userid = Convert.ToInt32(Request.QueryString["uid"].ToString());


          string filter = Request.QueryString["flt"];


          GetVehicleData(rid == 0 ? currentFleet : 0, rid, userid, filter, groupId); // fill the static DataTable                


          SimpleMarkerOverlay smMarkerOverlay = (SimpleMarkerOverlay)Map1.CustomOverlays["simplevehiclelayer"];


          smMarkerOverlay.Markers.Clear();          


          for (int i = 0; i < staticDt.Rows.Count; i++)


          {


              if ((Convert.ToDouble(staticDt.Rows["X"].ToString()) != 0) && (Convert.ToDouble(staticDt.Rows["Y"].ToString()) != 0))


              {


                  string uid = staticDt.Rows["CIHAZID"].ToString();


 


                  string plaka = staticDt.Rows["PLAKA"].ToString();


                  string hiz = staticDt.Rows["SPEED"].ToString();


                  string tarih = staticDt.Rows["DATE"].ToString();


                  string adres = HttpContext.Current.Server.HtmlEncode(staticDt.Rows["LOCATION"].ToString());


 


                  double xCoord = 0;


                  double.TryParse(staticDt.Rows["X"].ToString(), out xCoord);


                  double yCoord = 0;


                  double.TryParse(staticDt.Rows["Y"].ToString(), out yCoord);


                  int kontak = (int)staticDt.Rows["KONTAK"];


                  int aractip = (int)staticDt.Rows["ARACTIPID"];


                  bool rolanti = (bool)staticDt.Rows["ROLANTI"];


                  bool status = Convert.ToInt32(staticDt.Rows["STATUS"]) != 0;


                    


                  DateTime InsertDate = Convert.ToDateTime(staticDt.Rows["INSERTDATE"].ToString());


                  int iStatus = 0;                  


 


                  TimeSpan tm = DateTime.Now - InsertDate;


 


                  if ((!status) && (tm.TotalMinutes >= 60))


                  {


                      iStatus = 4;


                  }


                  else


                  {


                      if (kontak == 1 && !rolanti) iStatus = 1;


                      else if (kontak == 1 && rolanti) iStatus = 2;


                      else if (kontak == 0) iStatus = 3;


                  }                 


 


                  string vStatus = String.Format("{0:000}", iStatus);


                  string vFolder = (aractip > 0) ? aractip.ToString() + "/" : "";


                  string imagePath = String.Format("images/vTypes/{0}{1}.gif", vFolder, vStatus);


                  Vertex v = MapGlobals.ConvertCoord(xCoord, yCoord, true);


           


                  Marker vm = new Marker(v.X, v.Y);                                                                                      


                  vm.WebImage = new WebImage(imagePath);


                  vm.Popup = GetPopupStyle(uid, plaka, hiz, adres, tarih);                  


                  vm.Popup.HasCloseButton = false;


                  vm.Popup.IsVisible = false;


                 


                  smMarkerOverlay.Markers.Add(vm);                


              }


          }


}



 


 



How can I add labels for each markers?

thanks.

Hi Ayhan,


You can set the Text property of the WebImage. Please refer to the following code:


Marker vm= new Marker (v.X,v.Y);

vm.WebImage.Text = "Label";

......


Thanks,


Johnny 



Thanks  Johnny,


Sorry about my question, I was tried it before but it gives me results as attached pictures.


 


Without Label : 


with label : 


 


Thanks,


Ayhan



Hi Ayhan,


I think the problem is caused by the WebImage without setting the ImageWidth and ImageHeight properties ( Maybe you need to set the ImageOffsetX and ImageOffsetY properties suitably also ). Please refer to the following code:


Marker vm = new Marker (v.X,c.Y);

vm.WebImage = new WebImage(imagePath,30,25,-15.0f,-25f);

vm.WebImage.Text = "Label";

......


Thanks,


Johnny


 



 Thanks Johnny,


Now it shows the labels, but at this point I tried to show labels as attached picture but I could not find any property for that.


 



 İs there a way to do that?


Thanks,


Ayhan 



Ayhan,


Sorry for the delay in responding your post. I don't understand very well what you mean. Could you be a little more descriptive in your explanation? Do you want to add some GIF or JPG pictures as labels? Please give us more information about your scenario? It will be helpful.


Thanks,


Johnny



 Johnny,


I want to show labels like popup, it means that the labels have their own background color, for example black text color on white background color.


Thanks,


Ayhan


 


 



Ayhan, 
  
 I’m sorry but I need to say that we don’t support that, but I’m sure you can get it via the simplest Popup without “closedbutton”. You can have a try and any question please let us knows. 
  
 Thanks. 
  
 Johnny 


Thanks Johnny,  I do it with the following code, but in this case it shows me extra balloon image. How can hide it?


                  vm.WebImage = new WebImage(imagePath);
                  vm.Popup = GetPopupStyle(uid, plaka, hiz, adres, tarih);
                  vm.Popup.HasCloseButton = false;
                  vm.Popup.IsVisible = false;
                  
                  StringBuilder htmlText = new StringBuilder();
                  htmlText.Append("");
                  htmlText.Append("");
                  htmlText.Append(plaka.ToLower());             
                  htmlText.Append("");
                  htmlText.Append("");
                  CustomPopup popup = new CustomPopup();                  
                  popup.ContentHtml = htmlText.ToString();
                  popup.AutoSize = true;
 
                  Marker vm2 = new Marker(v.X, v.Y);
                  vm2.Popup = popup;
                  vm2.Popup.HasCloseButton = false;
                  vm2.Popup.IsVisible = true;
                  
                  smMarkerOverlay.Markers.Add(vm);
                  smMarkerOverlay.Markers.Add(vm2);                
 

Thanks,  Ayhan



Hi Ayhan,


I think you could add the popup to the Map but not a marker so that it won't show the default balloon image. Please refer to the following code which based on your code above:


vm.WebImage = new WebImage(imagePath);
                  vm.Popup = GetPopupStyle(uid, plaka, hiz, adres, tarih);
                  vm.Popup.HasCloseButton = false;
                  vm.Popup.IsVisible = false;                  
                  ......
                  CustomPopup popup = new CustomPopup();                  
                  popup.ContentHtml = htmlText.ToString();
                  popup.AutoSize = true;
                  popup.HasCloseButton = false;
                  popup.IsVisible = true;
                  popup.Position=new PointShape(v.X, v.Y);
 
                  smMarkerOverlay.Markers.Add(vm);
                  Map1.Popups.Add(popup);         


 


If I misunderstand your meaning please let me know.
Thanks,
 
Johnny

 


 



Thank you very much  Johnny, you understand me very well, thanks again…

It’s our pleasure, thanks. 
  
 Johnny