Xamarin表单地图自定义图钉位置更新

时间:2019-01-30 09:24:51

标签: c# xamarin xamarin.forms xamarin.ios

我有一个使用Xamarin.Forms.Maps地图视图的Xamarin.Forms项目。我知道可以在运行时更改Pin的位置,以便在显示中自动更新它,而不必在每次更新时都创建新的Pin。我通过更新Position的{​​{1}}属性来进行测试。但是,我遇到了以下问题:

我有一个Pin类,它使用不同的类型/类来存储位置。每次创建新的Target对象时,也会创建一个新的Target对象,然后将其添加到地图中。目前,这是我目前的工作方式。

TargetPin

Target

namespace Foo.Models { public struct WPos { public double lat; public double lon; } public class Target { public WPos location { get; set; } public Target(JObject json) { location = new WPos { lat = Util.jGet<double>(json, "location/latitude"), lon = Util.jGet<double>(json, "location/longitude") }; } } }

TargetPin

以及namespace Foo.Controls { public class TargetPin : Pin { Target target; public string pinId { get; set; } public string url { get; set; } public TargetPin(Target _t) { target = _t; url = "url"; Label = _t.targetId.ToString(); Type = PinType.Place; pinId = _t.targetId.ToString(); Position = new Position(_t.location.lat, _t.location.lon); } } }

中的实例化
Map

我的问题是,namespace Foo.Controls { public class TargetMap : Map { public List<TargetPin> targetPins { get; set; } public TargetMap() : base() { targetPins = new List<TargetPin>(); } void onTrackAdded(object sender, Target t) { Device.BeginInvokeOnMainThread(() => { TargetPin pin = new TargetPin(t); Pins.Add(pin); targetPins.Add(pin); }); } } } 使用Target作为位置,WPos(作为图形表示)使用TargetPin。这意味着每当我创建新的Position时都必须实例化new Position(double, double),并且该职位不会通过引用更新

是否可以使用一个TargetPin类型的成员来存储对另一个对象的基本类型成员的引用?还是只想在ref类中也使用Position类型?

0 个答案:

没有答案