【发布时间】:2020-03-29 00:35:28
【问题描述】:
请评论,当区域更改时,如何获取地图中心(Xamarin.Forms.Maps)的经纬度?在 C# 中,检索属性“Map.VisibleRegion”(https://docs.microsoft.com/en-us/dotnet/api/xamarin.forms.maps.map.visibleregion?view=xamarin-forms) 并找到相关属性“MapSpan.Center”。但是,它与 F# 的 fabulous 不同,我不知道如何从 view.map 中检索属性。谢谢。
let view (model : Model) dispatch =
let paris = Position(48.8566, 2.3522)
let london = Position(51.5074, -0.1278)
let calais = Position(50.9513, 1.8587)
let map =
View.Map
(hasZoomEnabled = true, hasScrollEnabled = true,
pins = [ View.Pin(paris, label = "Paris", pinType = PinType.Place)
View.Pin(london, label = "London", pinType = PinType.Place) ],
requestedRegion = MapSpan.FromCenterAndRadius(calais, Distance.FromKilometers(300.0)))
// View
View.ContentPage(content = map)
-- e.g map.visibleRegion
【问题讨论】:
-
您好,您可以看看这个示例(alejandroruizvarela.blogspot.com/2015/07/…)。
-
您好,@JuniorJiang-MSFT,感谢您的帮助。我看过这个样本。因为我的应用程序正在使用美妙的 UI 来实现一个简单的模型-视图-更新 (MVU) 应用程序模式,类似于 Elm 架构。将此示例应用到我的应用程序中非常复杂。
-
将
SelectedRegion添加到您的模型中。将新的SelectRegion消息添加到您的消息列表中。然后在您的update函数中,使SelectRegion消息更改模型。接下来,您需要在 UI 中使用区域选择器来触发消息以更新模型dispatch (SelectRegion model.regions.calais)或类似的模型,尽管我猜您不希望像这样对区域进行硬编码。然后你需要做的就是用model.SelectedRegion替换上面视图函数中硬编码的calais。 -
@drkmtr。谢谢你的帮助。硬编码的“加来”用于简化问题。当用户更改位置(例如缩放、拖动或俯仰)时,我找不到使用地图中心位置(纬度和经度)更新模型的方法(回调或属性)。
-
抱歉,我完全误解了这个问题哈。
标签: xamarin.forms f# elmish xamarin.forms.maps