Xamain表单上的自定义地图图钉

时间:2018-11-20 22:30:30

标签: xamarin xamarin.forms

我正在关注Xamarin的文章,其中描述了如何使用图片here

自定义图钉
 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;
}

我在资源/可绘制图像中有一个png图像。但是,该地图未显示任何引脚。我在自定义渲染器中放置了一个断点,它命中了,所以我知道它被调用了。这是实现自定义地图的页面的代码:

Xaml

 <controls:CustomMap MapType="Street" x:Name="map" WidthRequest="150"  IsVisible="True" HasZoomEnabled="True" HasScrollEnabled="True">
                        <controls:CustomMap.HeightRequest>
                            <OnIdiom>
                                <OnIdiom.Phone>
                                    <OnPlatform
                                iOS="250"
                                Android="150" />
                                </OnIdiom.Phone>
                            </OnIdiom>
                        </controls:CustomMap.HeightRequest>
                    </controls:CustomMap>

及其背后的代码

  var position = new Xamarin.Forms.Maps.Position(item.Latitude.Value, item.Longitude.Value); // Latitude, Longitude
                        var pin = new CustomPin
                        {
                            Type = PinType.Place,
                            Position = position,
                            Label = item.Name,
                            Address = item.AddressString
                        };

                        pin.Clicked += async (sender, e) =>
                        {
                            await Navigation.PushAsync(new RestaurantDetails(item));
                        };

                        Device.BeginInvokeOnMainThread(() =>
                        {
                            map.Pins.Add(pin);
                            map.CustomPins.Add(pin);
                            // map.MoveToRegion(MapSpan.FromCenterAndRadius(position, Distance.FromMiles(0.3)));
                        });

2 个答案:

答案 0 :(得分:0)

此问题已解决,没有将图像也放入drawable-xxxx文件夹中。啊!

答案 1 :(得分:0)

对我来说,问题是 CustomMap 类,我添加了 CustomPins 而不引发 CreateMarker 重写方法。

如果您将 CustomPin 对象添加到,可能会帮助其他人知道您可能会遇到同样的问题,即Pins不会出现在 CustomMap 上。 strong> CustomPin 集合。通过将它们每个都添加到Pins集合中,我能够解决此问题。