This is how I add custom pin icons using Xamarin Forms Xamarin.Forms.GoogleMaps.
On my MainPage view:
1. I create the Map in my Xaml. I use the Xamarin.Forms.GoogleMaps Nuget.
2. I create a List of Location object
3. I do a foreach loop of all the locations
4. I add my “mycustomicon.png” 85px x 85px sized PNG icon. I store the icon in each projects Resource folder (Android\Resources\drawable and iOS\Resources)
namespace MyApp.Models { public class Location { public int ID { get; set; } public string Content { get; set; } public string Title { get; set; } public double Longitude { get; set; } public double Latitude { get; set; } } }
protected async override void OnAppearing() { base.OnAppearing(); loc = await srv.GetAllLocationsFromSomewhere(); foreach (Models.Location l in loc) { Pin p = new Pin() { Type = PinType.Generic, Label = l.Title, Address = l.Content, Position = new Position(l.Latitude, l.Longitude), Icon = BitmapDescriptorFactory.FromBundle("mycustomicon.png"), Tag = l.ID }; map.Pins.Add(p); } map.PinClicked += Map_PinClicked; } private void Map_PinClicked(object sender, PinClickedEventArgs e) { var p = e.Pin; p.Label = null; //do this so the infowindow doesnt show. var map = (Xamarin.Forms.GoogleMaps.Map)sender as Xamarin.Forms.GoogleMaps.Map; Models.TPLocation loc = p.Tag as Models.Location; DisplayAlert(loc.Title, loc.Content, "Ok"); }