Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在Xamarin表单中的自定义地图pin上显示url_C#_Google Maps_Xamarin.forms - Fatal编程技术网

C# 在Xamarin表单中的自定义地图pin上显示url

C# 在Xamarin表单中的自定义地图pin上显示url,c#,google-maps,xamarin.forms,C#,Google Maps,Xamarin.forms,在Xamarin表单中,我使用谷歌地图插件来显示某些位置。 对于每个位置的pin,我希望显示一个url以及标签和地址,以便用户可以单击url并打开一个信息页面 我已经创建了一个自定义pin来包含url,但我不知道如何在pin上显示它 有人知道怎么做吗 public partial class MapPage : ContentPage { public List<CustomPin> CustomPins { get; set; } publ

在Xamarin表单中,我使用谷歌地图插件来显示某些位置。 对于每个位置的pin,我希望显示一个url以及标签和地址,以便用户可以单击url并打开一个信息页面

我已经创建了一个自定义pin来包含url,但我不知道如何在pin上显示它

有人知道怎么做吗

public partial class MapPage : ContentPage
    {
        public List<CustomPin> CustomPins { get; set; }

        public MapPage()
        {
            InitializeComponent();
            PlotPositions();
            MyMap.MoveToRegion(MapSpan.FromCenterAndRadius(new Position(lat, long), Distance.FromMiles(1.0)));
        }

        public  void PlotPositions()
        {
            var myPos = new Position(lat, long);
            var pin = new CustomPin
            {
                Type = PinType.Place,
                Position = myPos,
                Label = "Glasgow City Centre",
                Address = "Argle Street, Glasgow",
                Url = "testUrl"
            };
            MyMap.Pins.Add(pin);
        }

        public class CustomPin : Pin
        {
            public string Id { get; set; }
            public string Url { get; set; }
        }
地图页:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:maps="clr-namespace:Xamarin.Forms.Maps;assembly=Xamarin.Forms.Maps"
             x:Class="gl_mobile_app.Views.Map.MapPage">
    <ContentPage.ToolbarItems>
        <ToolbarItem Text="back" />
    </ContentPage.ToolbarItems>
    <ContentPage.Content>

        <Grid BackgroundColor="Gray">
            <Grid.RowDefinitions>
                <RowDefinition Height="*" />
            </Grid.RowDefinitions>

            <StackLayout VerticalOptions="FillAndExpand" HorizontalOptions="FillAndExpand" Grid.Row="0" Padding="20,20,20,20">
                <maps:Map 
                x:Name="MyMap"
                IsShowingUser="True"
                MapType="Street"
            />
            </StackLayout>
        </Grid>
    </ContentPage.Content>
</ContentPage>

您能提供渲染器和地图页面布局的全部代码吗

或者试着用这个例子

若要改进Pin,需要在droid项目中创建地图渲染器

在此渲染器中,需要重写CreateMarker方法

    protected override MarkerOptions CreateMarker(Pin pin)
    {
        var marker = new MarkerOptions();
        marker.SetPosition(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
        marker.SetTitle(pin.Label);
        marker.SetSnippet(pin.Address);
        marker.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.Pin));
        return marker;
    }
您还需要此标记的Pin图像


在我上面发布的链接中,您可以看到方法CreateMarker的示例,我已经更新了帖子以包含地图页面,我还没有地图页面的自定义渲染器,因为我不确定如何处理此问题。就目前而言,地图确实出现了,并且显示了图钉。首先。你为使用谷歌地图创建了api密钥吗?是的,已经全部搞定了,地图可以工作了,我只是不知道如何用pinI显示url编辑我的答案,检查一下。看起来Xamarin的形式很好,直到你不需要定制一些东西。否则,您需要编写特定于平台的代码感谢所有这些-覆盖是否应该在创建管脚的地图页代码中?
    protected override MarkerOptions CreateMarker(Pin pin)
    {
        var marker = new MarkerOptions();
        marker.SetPosition(new LatLng(pin.Position.Latitude, pin.Position.Longitude));
        marker.SetTitle(pin.Label);
        marker.SetSnippet(pin.Address);
        marker.SetIcon(BitmapDescriptorFactory.FromResource(Resource.Drawable.Pin));
        return marker;
    }