【发布时间】:2018-04-08 22:48:16
【问题描述】:
我只是想知道 xamarin 中是否有一种方法可以转换更改地图针位置并可能旋转自定义地图针以匹配移动方向。我想避免自定义渲染器IF,但我愿意接受这个想法。
非常感谢任何帮助
【问题讨论】:
标签: c# android ios xamarin.forms maps
我只是想知道 xamarin 中是否有一种方法可以转换更改地图针位置并可能旋转自定义地图针以匹配移动方向。我想避免自定义渲染器IF,但我愿意接受这个想法。
非常感谢任何帮助
【问题讨论】:
标签: c# android ios xamarin.forms maps
我建议你使用Xamarin.Forms.GoogleMaps。
您可以先清除,然后在地图上重新添加以刷新位置
请参阅here。
你可以使用BEARING来达到效果。
请参阅here。
【讨论】:
您可以使用自定义动画为 Xamrin Forms Map 上的图钉移动设置动画,如下所示:
var animation = new Animation(a => pin.Position = new Position(pin.Position.Latitude + 0.0001, pin.Position.Longitude), 1, 2);
animation.Commit(this, "PinAnimation", 100, 10000, Easing.SinInOut , null, () => false);
docs.microsoft.com 上有关 Xamarin 自定义动画的更多详细信息
希望这会有所帮助。
【讨论】:
@Andy Sinclair 的回答是一个很好的起点(the docs 也是如此),但如果您想为地图图钉设置动画(带有纬度、经度和可能的方位),您需要分别为每个标量值设置动画,就像这样:
var position = yourTargetPinPosition;
new Animation {
// Animate the change in latitude
{ 0, 1, new Animation(lat => pin.Position = new Position(lat, pin.Position.Longitude), pin.Position.Latitude, position.Latitude) },
// Animate the change in longitude
{ 0, 1, new Animation(lng => pin.Position = new Position(pin.Position.Latitude, lng), pin.Position.Longitude, position.Longitude) }
// Play the animation over 2000ms with a new frame every 16ms
}.Commit(map, "PinAnimation", 16, 2000, Easing.SinInOut, (v, c) => {
// If the animation is cancelled for any reason, update the pin position to the target value
if (c) {
pin.Position = position;
}
// Optionally, pan the map to the new position after the animation is complete
var mapSpan = new MapSpan(position, 0.01, 0.01);
map.MoveToRegion(mapSpan);
}, () => false);
【讨论】: