我是Xamarin的新手,来自Android和Swift Dev。我很好奇,在调查如何做到这一点时,什么是一个好的方法或方向?它以xamarin.form.map出现,仅允许我使用销钉。
但是在Android Google Maps API上,我有MarkerDrag侦听器接口,在Swift中,我可以使标记可拖动。如何为Xamarin.Forms Map Views设置地图侦听器?请不要太详细,只是从哪里开始的想法。
任何帮助将不胜感激!
谢谢!
-t
但是在Android Google Maps API上,我有MarkerDrag侦听器接口,在Swift中,我可以使标记可拖动。如何为Xamarin.Forms Map Views设置地图侦听器?请不要太详细,只是从哪里开始的想法。
对于Xamarin.Forms
,如果要访问Xamarin.Forms
不具备的某些本机功能,则需要自定义渲染器。也适用于地图:
-
在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); } } }