在Xamarin表单中单击多边形时如何显示弹出窗口

时间:2020-02-04 12:17:23

标签: c# asp.net-mvc xamarin.forms polygon

我正在使用WEB API检索坐标并将其显示为地图上的多边形。 现在,我想使这些多边形单击以显示弹出窗口,其中包含来自API的更多信息。 我的Xaml:

  <maps:Map x:Name="map">
            <x:Arguments>
                <maps:MapSpan>
                    <x:Arguments>
                        <maps:Position>
                            <x:Arguments>
                                <x:Double>-30.241943</x:Double>
                                <x:Double>25.771944</x:Double>
                            </x:Arguments>
                        </maps:Position>
                        <x:Double>
                            20
                        </x:Double>
                        <x:Double>
                            20
                        </x:Double>
                    </x:Arguments>
                </maps:MapSpan>
            </x:Arguments>
            <maps:Map.MapElements>
            </maps:Map.MapElements>
        </maps:Map>
    </StackLayout>

然后用我的C#代码添加多边形:

foreach (var tempList in AlertsList)
{
    string alertType = tempList.AlertType;
    if (alertType == "Advisory")
    {
    polygon = new Polygon();
    polygon.StrokeColor = Color.FromHex("ffff00");
    polygon.FillColor = Color.FromHex("ffff00");
    polygon.StrokeWidth = 5f;

    foreach (var Poly in tempList.Polygon)
    {
        float Lat = float.Parse(Poly[0]);
        float Long = float.Parse(Poly[1]);
        polygon.Geopath.Add(new Position(Lat, Long));
    }
    // add to map
    map.MapElements.Add(polygon);
    }
}

1 个答案:

答案 0 :(得分:0)

将“手势识别器”添加到视图中,并根据需要显示弹出窗口。您可以将手势添加到Xamarin表单中的任何视图。

var tapGestureRecognizer = new TapGestureRecognizer();
tapGestureRecognizer.Tapped += (s, e) => {
    // handle the tap to display the popup here
};
[YourView].GestureRecognizers.Add(tapGestureRecognizer);

如果要显示简单的警报对话框,则可以使用Xamarin表单中的DisplayAlert来获得结果。有关更多详细信息,请参考documentation here

如果您希望根据UI要求显示自定义的弹出窗口,则可以使用出色的开源插件(Rg.Plugins.Popup)。您可以下载NuGet here。它也有各种示例供您实现所需的内容。

希望对您有所帮助。