Articles in this section
Category / Section

How to add a button with interaction inside the marker tooltip of Xamarin Maps (SfMaps)

2 mins read

This section explains how to add a button with interaction inside the marker tooltip of Xamarin Maps (SfMaps).

 

Marekr_tooltip_template_image

 

Step 1: Create the SfMaps sample with all necessary NuGets. For more information, please refer to the Xamarin Map getting started documentation.

 

Step 2: Initialize the Map control and add an imagery layer into it, as shown in the following code sample.

 

[XAML]

<maps:SfMaps>
    <maps:SfMaps.Layers>
        <maps:ImageryLayer>
        </maps:ImageryLayer> 
    </maps:SfMaps.Layers>
</maps:SfMaps>

 

Step 3: Add the required number of custom markers in the imagery layer with corresponding latitude and longitude values.

 

[XAML]

…
<maps:ImageryLayer>
    <maps:ImageryLayer.Markers>
        <local:CustomMarker Country="India"
                            Latitude="20.593683"
                            Longitude="78.962883" />
        <local:CustomMarker Country="USA"
                            Latitude="38.8833"
                            Longitude="-77.0167" />
        <local:CustomMarker  Country="Brazil"
                             Latitude="-15.7833"
                             Longitude="-47.8667" />
    </maps:ImageryLayer.Markers>
    <maps:ImageryLayer.MarkerSettings>
        <maps:MapMarkerSetting MarkerIcon="Image"
                               VerticalAlignment="Near"
                               ImageSource="pin.png"
                               IconSize="15">
        </maps:MapMarkerSetting>
    </maps:ImageryLayer.MarkerSettings>
</maps:ImageryLayer>
…

 

[C#]

public class CustomMarker: MapMarker
{
    public string Country { get; set; }
}

 

Step 4: Create the template with buttons and click events, then assign it to the TooltipTemplate property of TooltipSetting. For more information, please refer to the following code sample.

 

[XAML]

<maps:MapMarkerSetting.TooltipSettings>
    <maps:TooltipSetting ShowTooltip="True"
                         BackgroundColor="Aqua"
                         StrokeColor="Black"
                         StrokeWidth="1"
                         Duration="1000">
        <maps:TooltipSetting.TooltipTemplate>
            <DataTemplate>
                <StackLayout HeightRequest="70"
                             WidthRequest="130">
                    <Label Text="{Binding Country}"
                           HeightRequest="30"
                           VerticalOptions="Start"
                           FontSize="20"
                           HorizontalTextAlignment="Center" />
                    <Grid>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>
                        <Button Text="Ok"
                                Margin="2"
                                BackgroundColor="LightGray"
                                Clicked="Ok_Clicked" />
                        <Button Text="Cancel"
                                Margin="2"
                                Grid.Column="1"
                                BackgroundColor="LightGray"
                                Clicked="Cancel_Clicked" />
                    </Grid>
                </StackLayout>
            </DataTemplate>
        </maps:TooltipSetting.TooltipTemplate>
    </maps:TooltipSetting>
</maps:MapMarkerSetting.TooltipSettings>

 

[C#]

public partial class MainPage : ContentPage
{
…
    private void Ok_Clicked(object sender, EventArgs e)
    {
        // It will be triggered when click the OK button.
    }
 
    private void Cancel_Clicked(object sender, EventArgs e)
    {
        // It will be triggered when click the Cancel button.
    }
}

 

View the sample in GitHub

 

See also

 

How to set the Geo coordinates points to the ImageryLayer?

 

How to set markers in imagery layer?

 

How to load custom map in SfMaps?

 

How to calculate a zoom level based on map geo-bounds?

 

How to calculate a zoom level based on distance?

Did you find this information helpful?
Yes
No
Help us improve this page
Please provide feedback or comments
Comments (0)
Please  to leave a comment
Access denied
Access denied