<maps:SfMaps x:Name="sfmap" BackgroundColor="White" >
<maps:SfMaps.Layers>
<maps:ImageryLayer LayerType="Bing" Markers="{Binding CustomMarkers}" BingMapKey="Your Bing Key">
<maps:ImageryLayer.MarkerTemplate>
<DataTemplate>
<BoxView x:Name="boxView"
CornerRadius="{Binding .,Converter={x:StaticResource TemplateConverter},ConverterParameter={x:Reference boxView},Mode=TwoWay}"
BackgroundColor="LightBlue"/>
</DataTemplate>
</maps:ImageryLayer.MarkerTemplate>
</maps:ImageryLayer>
</maps:SfMaps.Layers>
</maps:SfMaps> |
public class TemplateConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (value != null)
{
var population = (value as CustomMarker).Population;
var isLowRange = population < 250000000;
var isMiddleRange = population >= 250000000 && population < 400000000;
double radius = isLowRange ? 5 : isMiddleRange ? 10 : 15;
(parameter as BoxView).HeightRequest = (parameter as BoxView).WidthRequest = radius * 2;
(parameter as BoxView).BackgroundColor = radius == 5 ? Color.FromHex("#2E769F") : (radius == 10) ? Color.FromHex("#D84444") : Color.FromHex("#816F28");
return radius;
}
return 0;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
return value;
}
} |