Xamarin.forms - 如何在 MapView 上创建可拖动元素(标记)?
Posted
技术标签:
【中文标题】Xamarin.forms - 如何在 MapView 上创建可拖动元素(标记)?【英文标题】:Xamarin.forms - How do I create draggable elements (Markers) on a MapView? 【发布时间】:2018-04-01 04:55:46 【问题描述】:我是 Xamarin 的新手,来自 android 和 Swift 开发。我只是好奇在调查如何做到这一点时,什么是一个好的方法或方向?它与 Xamarin.Form.Map 一起出现,它只允许我使用引脚。
但在 Android Google Maps API 上,我有 MarkerDrag 监听器接口,在 Swift 中,我可以使标记可拖动。如何为 Xamarin.Forms 地图视图设置地图侦听器?拜托,不要太详细,只是从哪里开始的想法。
任何帮助将不胜感激!
谢谢!
-T
【问题讨论】:
【参考方案1】:但在 Android Google Maps API 上,我有 MarkerDrag 侦听器接口,在 Swift 中,我可以使标记可拖动。如何为 Xamarin.Forms 地图视图设置地图侦听器?拜托,不要太详细,只是从哪里开始的想法。
对于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>
为它创建一个自定义的Renderer(下面只是一个如何在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);
【讨论】:
以上是关于Xamarin.forms - 如何在 MapView 上创建可拖动元素(标记)?的主要内容,如果未能解决你的问题,请参考以下文章
在 Xamarin.Forms 中录制语音后如何保存音频文件