C# 如何在xamarin forms google maps中更改位置更改事件上的Pin位置
我正在开发一个应用程序来跟踪用户的实时位置。我有geolocator插件中的更新位置。当我得到新位置时,我会更改pin位置。但它在地图中不会更改。下面是代码 此方法每1秒调用一次C# 如何在xamarin forms google maps中更改位置更改事件上的Pin位置,c#,xamarin,xamarin.forms,C#,Xamarin,Xamarin.forms,我正在开发一个应用程序来跟踪用户的实时位置。我有geolocator插件中的更新位置。当我得到新位置时,我会更改pin位置。但它在地图中不会更改。下面是代码 此方法每1秒调用一次 private async void TrackMe() { var current = await CrossGeolocator.Current.GetPositionAsync(); current.Accuracy = 30; float bearing =float .Parse (
private async void TrackMe()
{
var current = await CrossGeolocator.Current.GetPositionAsync();
current.Accuracy = 30;
float bearing =float .Parse ( current.Heading.ToString ());
var pins = new Pin { Label = "ME", Icon = BitmapDescriptorFactory.FromBundle("path4646.png"), Flat = true
};
var latitude = current.Latitude;
var longitude = current.Longitude;
Device.BeginInvokeOnMainThread(() =>
{
pins.Position = new Position(latitude, longitude);
pins.Rotation = bearing;
if (MapTrack.Pins.Count == 0)
{
MapTrack.Pins.Add(pins);
}
MapTrack.MoveCamera(CameraUpdateFactory.NewPosition(new Position(latitude, longitude)));
});
}
任何帮助都将不胜感激,提前谢谢
关于根据您的评论,您能否对代码进行此更改并查看其是否有效?我没有将开发环境设置为自己先试用
private async void TrackMe()
{
var current = await CrossGeolocator.Current.GetPositionAsync();
current.Accuracy = 30;
float bearing =float .Parse ( current.Heading.ToString ());
var pins = new Pin { Label = "ME", Icon = BitmapDescriptorFactory.FromBundle("path4646.png"), Flat = true
};
var latitude = current.Latitude;
var longitude = current.Longitude;
Device.BeginInvokeOnMainThread(() =>
{
pins.Position = new Position(latitude, longitude);
pins.Rotation = bearing;
if (MapTrack.Pins.Count == 0)
{
MapTrack.Pins.Add(pins);
}
else
{
MapTrack.Pins[0] = pins;
}
MapTrack.MoveCamera(CameraUpdateFactory.NewPosition(new Position(latitude, longitude)));
});
}
我假设Pins集合有一个可写索引器。如果不是这样,您需要修改其他部分。是因为您总是创建一个新的管脚并更新位置,但仅在现有管脚计数为0时将其分配给
管脚吗?pin一旦添加,就永远不会更新。我只想第一次将pin添加到地图中,下次我想更改pin的位置以获得平滑的跟踪过期时间