我正在关注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)));
});
答案 0 :(得分:0)
此问题已解决,没有将图像也放入drawable-xxxx文件夹中。啊!
答案 1 :(得分:0)
对我来说,问题是 CustomMap 类,我添加了 CustomPins 而不引发 CreateMarker 重写方法。
如果您将 CustomPin 对象添加到,可能会帮助其他人知道您可能会遇到同样的问题,即Pins不会出现在 CustomMap 上。 strong> CustomPin 集合。通过将它们每个都添加到Pins集合中,我能够解决此问题。