I have a cluster of pushpins and i have added the click events for all the pushpins in foreach. now i need to find out which pushpin is clicked so as to do the actions accordingly. Below is my sample code.
private void setpins()
{
Pushpin pin = null;
lstpin.Add(new clsPushpin() { stores = "chennai", _loc= new locations() { lat = 13.04, longd = 80.17 } });
lstpin.Add(new clsPushpin() { stores = "Karur", _loc = new locations() { lat = 10.58, longd = 78.07 } });
lstpin.Add(new clsPushpin() { stores = "coimbatore", _loc = new locations() { lat = 11.00, longd = 77.00 } });
foreach (clsPushpin cls in lstpin)
{
pin = new Pushpin();
GeoCoordinate geo = new GeoCoordinate(cls._loc.lat, cls._loc.longd);
pin.Location = geo;
pin.Background = new SolidColorBrush(new Color() { A = 255, R = 0, G = 100, B = 120 });
pin.Foreground = new SolidColorBrush(Colors.White);
mymap.Children.Add(pin);
pin.MouseLeftButtonUp += new MouseButtonEventHandler(pushpintap);
}
mymap.Center = pin.Location;
mymap.SetView(pin.Location, 5.0);
}
private void pushpintap(object sender, MouseButtonEventArgs e)
{
//Messagebox are what ever
MessageBox.Show("My lat long is:"+lat,+long);
}
With the above snippet,the last pushpin's value is saved. But i wanna find the exact pin which gets selected to notify/pop up accoringly. Thx in advance.
You could do the following:
Store the clsPushpin object in the Pushpin Tag property.
In the pushpin click event cast the sender.tag as a clsPushpin object to get the data for that pushpin.
foreach (clsPushpin cls in lstpin)
{
pin = new Pushpin();
GeoCoordinate geo = new GeoCoordinate(cls._loc.lat, cls._loc.longd);
pin.Location = geo;
pin.Background = new SolidColorBrush(new Color() { A = 255, R = 0, G = 100, B = 120 });
pin.Foreground = new SolidColorBrush(Colors.White);
mymap.Children.Add(pin);
pin.MouseLeftButtonUp += new MouseButtonEventHandler(pushpintap);
pin.Tag = cls;
}
Then in your pushpintap event handler do this:
private void pushpintap(object sender, MouseButtonEventArgs e)
{
//Messagebox are what ever
clsPushpin cls = sender.tag as clsPushpin;
MessageBox.Show("My lat long is:"+cls.lat.ToString()+","+cls.long.ToString());
}
You probably should be using databinding to bind the data to a collection of pushpins.