- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 MVVM 代码结构在 Windows Phone 8 上运行 map 叠加层。我似乎无法让 MapOverlay 的 GeoCoordinate 属性正确绑定(bind)到我的 ViewModel,我也不知道为什么。
代表的 XAML 是:
标题:
xmlns:maps="clr-namespace:Microsoft.Phone.Maps.Controls;assembly=Microsoft.Phone.Maps"
代码:
<maps:Map x:Name="Map" ZoomLevel="6" Height="500" Width="500" CartographicMode="Terrain" Center="{Binding MapCenter, Converter={StaticResource GpsCoordinateConverter}, Mode=TwoWay}">
<maps:Map.Layers>
<maps:MapLayer>
<maps:MapOverlay PositionOrigin="1,1" GeoCoordinate="{Binding MapCenter, Converter={StaticResource GpsCoordinateConverter}, Mode=OneWay}">
<Ellipse Fill="Blue" Height="20" Width="20" Opacity="50" />
</maps:MapOverlay>
</maps:MapLayer>
</maps:Map.Layers>
</maps:Map>
GpsCoordinateConverter
只是一个非常简单的类,它将数据类型从我的 View 模型更改为 map 控件所需的 System.Device.Location.GeoCoordinate
。 map 绑定(bind)的中心工作正常,但叠加层上的 GeoCoordinate 不会绑定(bind),蓝色圆圈恰好位于 map 的左上角。
我已经通过调试验证了我的模型正在触发 PropertyChanged 事件,并且因为 map 中心本身正在更新,甚至尝试传递 null 来触发所有字段都无济于事。
我已经在调试中检查过,MapOverlay GeoCoordinate 的属性似乎始终为空。我尝试将以下代码添加到代码隐藏中,将圆圈放在我想要的位置,但我似乎无法根据事件让它发生......
GpsCoordinateConverter converter = new GpsCoordinateConverter();
Map.Layers[0][0].GeoCoordinate = (GeoCoordinate)converter.Convert(((ViewModel.ReportViewModel)DataContext).MapCenter, typeof(GeoCoordinate), null, null);
有谁知道为什么会这样或如何解决这个问题?我不想为此放弃 MVVM 架构。
最佳答案
这是 Silverlight XAML 解析器的限制。作为 XAML 元素属性的一部分初始化的对象将不参与同一逻辑树,因此没有数据上下文深入到它们。
为了对新的诺基亚 map 控件进行数据绑定(bind),请使用新的 Windows Phone Toolkit 中的 MapExtensions。 .例如这里的 how to create a PushPin in a specific GeoCoordinate使用 MapExtensions。
<maps:Map x:Name="Map" Grid.Row="1" Hold="OnMapHold">
<maptk:MapExtensions.Children>
<maptk:Pushpin x:Name="RouteDirectionsPushPin" Visibility="Collapsed"/>
<maptk:MapItemsControl Name="StoresMapItemsControl">
<maptk:MapItemsControl.ItemTemplate>
<DataTemplate>
<maptk:Pushpin GeoCoordinate="{Binding GeoCoordinate}" Visibility="{Binding Visibility}" Content="{Binding Address}"/>
</DataTemplate>
</maptk:MapItemsControl.ItemTemplate>
</maptk:MapItemsControl>
<maptk:UserLocationMarker x:Name="UserLocationMarker" Visibility="Collapsed"/>
</maptk:MapExtensions.Children>
</maps:Map>
关于mvvm - MapOverlay 绑定(bind)不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13408379/
我对 ios 的内存使用有疑问。我已经实现了如下所示的代码,并在设备上运行了大约 10 分钟,它停止了并向我发出警告“收到内存警告”。我想知道为什么我会收到此警告。 NSArray *ants = [
目标 记录 Android 手机当前位置的信号强度。然后将它们全部显示在 map 上。 正在存储什么 在 android 上的 sqlite 数据库中以 形式记录。我使用 ORMLite 作为抽象层来
正如标题所说,我想知道如何实现叠加层边缘的黑色 handle /按钮 代码 I 用户当前创建我的叠加层和注释 func makeAnnotation(locationCoordinate: CLLoc
我正在尝试使用 MVVM 代码结构在 Windows Phone 8 上运行 map 叠加层。我似乎无法让 MapOverlay 的 GeoCoordinate 属性正确绑定(bind)到我的 Vie
friend 。我想像 PopUp Menu 一样绘制 MapOverlay,就像在这个图像中一样。我该怎么做。 最佳答案 您可以使用或引用我为此创建的 MapViewBalloons 项目:http
我有两个问题。首先,一旦我为坐标分配了内存请看下面的代码,我是否必须释放内存 free(coords)?其次,正如您在下面的代码中看到的那样,我获得了叠加层并添加到 map 上。但是,有一个不同的时间
在 map 控件 [wp8] 中,我使用了 map 覆盖来绘制地理坐标。我面临的问题是,在放大和缩小时,叠加层会从它的位置移到其他地方。有什么方法可以将其 anchor 定到特定位置,例如用于 anc
如果我将一组位置的纬度和经度存储在 SQLite 数据库中,我将如何检索这些值并将它们分别放入 OverlayItem 类中以便在 Google 的 map 代码中使用? 数据库名称:数据库 表名:地
我在下面有这个 MapActivity 类,用于显示 map 并放置用户当前位置的图钉。另一方面,我有一个对象类 VideoLocation,它具有从服务器的 JSON 文件中提取的一些地方的纬度和经
我是一名优秀的程序员,十分优秀!