【问题标题】:Adding Polygon to Map in WP8 and changing Opacity/Size在 WP8 中将多边形添加到地图并更改不透明度/大小
【发布时间】:2012-11-11 23:35:11
【问题描述】:

我正在尝试将项目从 WP7 转移到 WP8(因此从 Bing 地图更新到诺基亚的内置控件)。

最初,我基于一大堆 (20) 地理坐标界定了一个地图区域,这些地理坐标创建了一个 MapPolygon,然后更改了 MapPolygon 的 Opacity 属性,然后将其作为子项添加到地图控件中。

当我试图过渡到诺基亚的地图控件时,在我看来,没有办法指定我想使用地理坐标创建的多边形区域,而是必须使用点来代替。 这意味着当我在地图上放大和缩小时,多边形在屏幕上保持相同的形状。 当然,无论您放大/缩小,都必须有一种方法可以让多边形保持相同的比例大小?!?!?

我知道 Bing 地图仍然可以使用,但由于它已被弃用,我宁愿过渡到新的诺基亚地图。

这是我试图用来创建新映射的代码:

//Creating a Polygon
Polygon MyPolygon = new Polygon();


MyPolygon.Points.Add(new Point(2, 0));
MyPolygon.Points.Add(new Point(22, 0));
MyPolygon.Points.Add(new Point(2, 40));
MyPolygon.Stroke = new SolidColorBrush(Colors.Black);
MyPolygon.Fill = new SolidColorBrush(Colors.Black);
MyPolygon.SetValue(Grid.RowProperty, 1);
MyPolygon.SetValue(Grid.ColumnProperty, 0);
MyPolygon.Opacity = 0.5;

//Adding the Polygon to the Grid
//MyGrid.Children.Add(MyPolygon);

//Creating a MapOverlay and adding the Grid to it.
MapOverlay MyOverlay = new MapOverlay();
MyOverlay.Content = MyPolygon;

MyOverlay.GeoCoordinate = new GeoCoordinate(49.3393850118753, -0.4569707717895518);

//MyOverlay.PositionOrigin = new Point(0.99, 0.99);

//Creating a MapLayer and adding the MapOverlay to it
MapLayer MyLayer = new MapLayer();
MyLayer.Add(MyOverlay);

map1.Layers.Add(MyLayer);

我知道我可以将多边形添加到网格,然后将网格添加到叠加层,但这仍然不能解决问题。 但是正如您所看到的,没有办法添加地理坐标......只有点。

任何帮助将不胜感激!

【问题讨论】:

  • 肯定不止我一个人遇到过这个问题???

标签: map polygon windows-phone


【解决方案1】:

好吧,您必须使用一些数学运算,但我发现的最简单的方法是使用 ConvertViewportPointToGeoCoordinate 利用 ActualWidth 和 ActualHeight 地图属性来获取地图视口的坐标。这是您可以获取与中心相关的所有内容或任何您想用来保持比例的数学。

您还可以使用 MapPolyline 进行绘制,该绘图将采用地理坐标。 http://msdn.microsoft.com/en-us/library/microsoft.maps.mapcontrol.mappolyline.aspx

那么你应该在几乎任何情况下都被覆盖。

希望有帮助???

// 杰德

【讨论】:

    猜你喜欢
    • 2015-10-09
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-03
    • 2020-02-17
    • 1970-01-01
    • 2019-07-25
    相关资源
    最近更新 更多