ThinkGeo.com    |     Documentation    |     Premium Support

Find and Highlight Marker

I want to find a marker from added markers giving its name or id and highlight it on the map. How can I do that? 
the code below shows how I add markers on the map



 ,

SimpleMarkerOverlay smMarkerOverlay = (SimpleMarkerOverlay)Map1.CustomOverlays["simplevehiclelayer"];
for (int i = 0; i < staticDt.Rows.Count; i++){
 string did = staticDt.Rows[i]["DEVICEID"].ToString();
 string plate = staticDt.Rows[i]["PLATE"].ToString();
 string speed = staticDt.Rows[i]["SPEED"].ToString();
 string sDate = staticDt.Rows[i]["DATE"].ToString();
 string address = HttpContext.Current.Server.HtmlEncode(staticDt.Rows[i]["LOCATION"].ToString());
    int dtype = (int)staticDt.Rows[i]["DTYPE"];
 bool status = Convert.ToInt32(staticDt.Rows[i]["STATUS"]) != 0;

 double Lat = 0;
 double.TryParse(staticDt.Rows[i]["Lat"].ToString(), out Lat);
 double Lon = 0;
 double.TryParse(staticDt.Rows[i]["Lon"].ToString(), out Lon);

 Vertex v = MapGlobals.ConvertCoord(xCoord, Lat, Lon);
 Marker vm = new Marker(v.X, v.Y);

 string vStatus = String.Format("{0:000}", iStatus);
 string vFolder = (dtype > 0) ? dtype.ToString() + "/" : "";
 string imagePath = String.Format("images/vTypes/{0}{1}.gif", vFolder, vStatus);

 vm.WebImage = new WebImage(imagePath);
 vm.Popup = GetPopupStyle(did, plate, speed, address, sDate);
 vm.Popup.HasCloseButton = false;
 vm.Popup.IsVisible = false;
 smMarkerOverlay.Markers.Add(vm);
}


James if you remember webimage zooming topic, this is the case that I want to deploy it. Could you help me for this too?


thanks,


Ayhan



 


Hi Ayhan,
In the other thread you’ve mentioned about the WebImage resizing, It looks like you want to implement this function in a server side way, like what you said you want to use API like the below one. “WebImage.Resize.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20”
First of all, Maker is more like a client side object that works with JavaScript and what we can do is just set the Image applied to the Marker at the server side, if you want to resize the WebImage, you can use JavaScript to do it. This link will redirect you another thread which provides information about how to resize a WebImage using JavaScript.
gis.thinkgeo.com/Support/Dis...fault.aspx
Hope it helps.
Thank you very much.
James

Thank you James, 
  
 I will try to do it with javascript but there is no zoomin or zoomout event like mouseover and mouseout. And also what about for the first question? 
  
 Thanks, 
  
 Ayhan

 Hi Ayhan,


 


You can find a marker according to its name or id by using javascript. Please see the javascript code below:


 


         var tgMap = null;


        var OnMapCreated = function (map) {


            tgMap = map;


        }


 


        var highlightTheMarker = function () {


            if (tgMap != null) {


                markers = tgMap.getLayer('MarkerOverlay');


                if (markers.markers != null) {


                    for (var i = 0; i < markers.markers.length; i++) {


                        if (markers.markers.id == 'markerid') {


                            var currentMarker = markers.markers;


                            alert('its me');


                            //then you can do your job, like highlight the marker by change a highlighted image to marker


                        }


                    }


                }


            }


        }


 


And your server side code, like below:


 


InMemoryMarkerOverlay markerOverlay = new InMemoryMarkerOverlay("MarkerOverlay");


markerOverlay1.Features.Add(new Feature(new Vertex(-94.48242, 38.75977), "markerid"));


 


And about the zoom problem, you cannot zoom in or zoom out with javascript, you need to operate it in server by Ajax. Please see the SetTheZoomLevelsOnAMarker in HowDoISample.


 


If you have more requirements, please tell me.


 


Thanks,


 


James



Thanks James 


Ayhan, 
  
 You’re welcome. 
  
 let me know if you still have problem. 
  
 Thanks, 
 james