如何在 bing 地图中创建 "rubber rectangle selection"
How to create a "rubber rectangle selection" in the bing maps
我正在使用 Bing 地图 WPF 控件来渲染地图。我的要求是允许用户创建一个矩形,并根据绘制的矩形坐标获取经纬度信息。
我是通过以下方式实现的
private MapPolygon boundingRectangle;
我的mouse_leftButtonDown代码看起来像
Point point = e.GetPosition(this);
this.mouseCordinates = new PointCollection();
this.mouseCordinates.Add(point);
mouse_leftButtonUp代码看起来像
var point = e.GetPosition(this);
this.mouseCordinates.Add(point);
var pt1 = this.mouseCordinates[0];
var pt3 = this.mouseCordinates[1];
var pt2 = new System.Windows.Point(pt3.X, pt1.Y);
var pt4 = new System.Windows.Point(pt1.X, pt3.Y);
var loc1 = this.ViewportPointToLocation(pt1);
var loc2 = this.ViewportPointToLocation(pt2);
var loc3 = this.ViewportPointToLocation(pt3);
var loc4 = this.ViewportPointToLocation(pt4);
this.Children.Remove(this.boundingRectangle);
this.boundingRectangle = new MapPolygon
{
Stroke = new SolidColorBrush(Colors.Chocolate),
StrokeThickness = 2,
Locations = new LocationCollection()
{
loc1,
loc2,
loc3,
loc4
}
};
this.BoundingBoxCoordinates = this.boundingRectangle.Locations;
this.Children.Add(this.boundingRectangle);
所以在鼠标移开时我得到了用户绘制的形状。但是在绘图时(我的意思是在拖动鼠标时,因为没有处理鼠标移动事件)用户无法在地图上看到任何东西。只有在鼠标松开时用户才能看到他们绘制的形状,因为子层是在鼠标松开后添加的。
我想要的是 "rubber selection" 矩形意思是在使用鼠标拖动绘制形状时用户应该看到该形状。应该热闹
由于我是 WPF 和地图的新手,我仍在努力解决这个问题。
请帮助我。
我使用 Bing 地图和 WPF 控件做了很多工作。我整理了一个代码示例,展示了如何使用鼠标和触摸在地图上绘制矩形。该示例对于论坛 post 来说有点太长了。我已将其上传到 MSDN:https://code.msdn.microsoft.com/Draw-Rectangles-on-Bing-ce083d0e
我正在使用 Bing 地图 WPF 控件来渲染地图。我的要求是允许用户创建一个矩形,并根据绘制的矩形坐标获取经纬度信息。
我是通过以下方式实现的
private MapPolygon boundingRectangle;
我的mouse_leftButtonDown代码看起来像
Point point = e.GetPosition(this);
this.mouseCordinates = new PointCollection();
this.mouseCordinates.Add(point);
mouse_leftButtonUp代码看起来像
var point = e.GetPosition(this);
this.mouseCordinates.Add(point);
var pt1 = this.mouseCordinates[0];
var pt3 = this.mouseCordinates[1];
var pt2 = new System.Windows.Point(pt3.X, pt1.Y);
var pt4 = new System.Windows.Point(pt1.X, pt3.Y);
var loc1 = this.ViewportPointToLocation(pt1);
var loc2 = this.ViewportPointToLocation(pt2);
var loc3 = this.ViewportPointToLocation(pt3);
var loc4 = this.ViewportPointToLocation(pt4);
this.Children.Remove(this.boundingRectangle);
this.boundingRectangle = new MapPolygon
{
Stroke = new SolidColorBrush(Colors.Chocolate),
StrokeThickness = 2,
Locations = new LocationCollection()
{
loc1,
loc2,
loc3,
loc4
}
};
this.BoundingBoxCoordinates = this.boundingRectangle.Locations;
this.Children.Add(this.boundingRectangle);
所以在鼠标移开时我得到了用户绘制的形状。但是在绘图时(我的意思是在拖动鼠标时,因为没有处理鼠标移动事件)用户无法在地图上看到任何东西。只有在鼠标松开时用户才能看到他们绘制的形状,因为子层是在鼠标松开后添加的。
我想要的是 "rubber selection" 矩形意思是在使用鼠标拖动绘制形状时用户应该看到该形状。应该热闹
由于我是 WPF 和地图的新手,我仍在努力解决这个问题。
请帮助我。
我使用 Bing 地图和 WPF 控件做了很多工作。我整理了一个代码示例,展示了如何使用鼠标和触摸在地图上绘制矩形。该示例对于论坛 post 来说有点太长了。我已将其上传到 MSDN:https://code.msdn.microsoft.com/Draw-Rectangles-on-Bing-ce083d0e