For everyone coming later, this is now well supported in Xamarin Forms.
In essence, you need to create a custom map class in your PCL or generic code that inherits from the Xamarin form map, and then create a custom rendering in each of the platform projects.
These custom renderers will be different for each platform, bearing in mind the specifics of drawing icons and any pop-up information displayed when you click on this output for this particular platform. You are not required to create your own renderer for all platforms, for those that do not appear on a regular map.
This is all now really well documented in Custom Renderers | Configure the Map section of the Xamarin Forms Developer's Guide . This documentation goes through creating your own rendering for Android, iOS, and UWP and explains that the code needs to be detailed. There are many, so I will not reproduce it here. There is also an accompanying sample solution .
It should be noted that if you are trying to reproduce this code in your own project, you will also need to add images to various available folders in the ProjectName \ Droid \ Resources directory, as well as two axml files in the layout directory.
source share