我是Xamarin的新手,来自Android和Swift dev。我只是好奇在调查如何做到这一点时开始的好方法或方向是什么?它出现在Xamarin.Form.Map中,它只允许我使用引脚。
但是在Android Google Maps API上我有MarkerDrag监听器接口,在Swift中我可以使标记可拖动。如何为Xamarin.Forms Map视图设置Map Listener?请不要太详细,只想知道从哪里开始。
非常感谢任何帮助!
谢谢!
-T
答案 0 :(得分:1)
但是在Android Google Maps API上我有MarkerDrag监听器接口,在Swift中我可以使标记可拖动。如何为Xamarin.Forms Map视图设置Map Listener?请不要太详细,只想知道从哪里开始。
对于Xamarin.Forms
,如果您想要访问Xamarin.Forms
不具备的某些原生功能,则需要Custom Renderer。也适用于地图:
在PCL中为地图创建自定义空控件:
public class CustomMap:Map
{}
在你的xaml页面中使用它:
<StackLayout>
<local:CustomMap WidthRequest="320" HeightRequest="200"
x:Name="MyMap"
IsShowingUser="true"
MapType="Hybrid" />
</StackLayout>
为它创建自定义渲染器(下面只是如何在Android中设置MarkerDrag
事件的示例。):
[assembly:ExportRenderer(typeof(MapsDemo.CustomMap),
typeof(MarkerClusterRenderer))]
namespace MapsDemo.Droid
{
public class MarkerClusterRenderer:MapRenderer,IOnMapReadyCallback
{
public MarkerClusterRenderer(Context c) : base(c)
{
}
protected override void OnMapReady(GoogleMap map)
{
base.OnMapReady(map);
var markerOptions = new Android.Gms.Maps.Model.MarkerOptions();
markerOptions.SetTitle("Winffeeeeeeeeeee");
markerOptions.SetPosition(new Android.Gms.Maps.Model.LatLng(37.051060, -122.014684));
markerOptions.Draggable(true);
map.AddMarker(markerOptions);
map.MarkerDrag += Map_MarkerDrag;
}
private void Map_MarkerDrag(object sender, GoogleMap.MarkerDragEventArgs e)
{
//implement your marker drag event here
}
protected override void OnElementChanged(ElementChangedEventArgs<Map> e)
{
base.OnElementChanged(e);
Control.GetMapAsync(this);
}
}
}