【发布时间】:2011-03-15 15:20:45
【问题描述】:
只是想知道是否有任何关于如何在 windows phone 7 应用程序中为地图编写可拖动图钉的资源。我看过了,只能找到有关如何为浏览器应用程序执行此操作的信息。
理想情况下,我希望用户能够单击图钉并将其拖动到地图上的某个位置,但是,目前我能想到的唯一方法是让用户拖动地图和图钉仍然在地图的中心。
【问题讨论】:
标签: c# silverlight windows-phone-7 bing-maps
只是想知道是否有任何关于如何在 windows phone 7 应用程序中为地图编写可拖动图钉的资源。我看过了,只能找到有关如何为浏览器应用程序执行此操作的信息。
理想情况下,我希望用户能够单击图钉并将其拖动到地图上的某个位置,但是,目前我能想到的唯一方法是让用户拖动地图和图钉仍然在地图的中心。
【问题讨论】:
标签: c# silverlight windows-phone-7 bing-maps
我还没有看到在 WP7 应用程序上完成此操作 - 但这里是 Silverlight 3 的描述 - http://pietschsoft.com/post/2010/05/30/Draggable-Pushpins-using-Bing-Maps-Silverlight-Control.aspx
在实现这一点时,我猜您需要注意实际放置图标相对于手指的位置 - 例如如果您查看单击/按住/拖动时文本插入符号在文本块中的移动方式,那么您会看到插入符号位置在手指上方偏移,因此您始终可以看到它。
【讨论】:
是的,你可以。这是一篇关于如何实现这种行为的好文章。
【讨论】:
我可以通过为 MouseMove 添加事件处理程序并将 Pushpin 更新到鼠标位置来拖动 Pushpin。
<my:Pushpin x:Name="pushpin" MouseLeftButtonDown="pushpin_MouseLeftButtonDown" MouseLeftButtonUp="pushpin_MouseLeftButtonUp" MouseMove="pushpin_MouseMove"/>
但问题是地图控件也会在您拖动图钉的同时平移。为了解决这个问题,我必须为图钉添加一个用于鼠标向上和鼠标向下的事件处理程序,并为地图控件添加一个用于 MapPan 的事件处理程序。
private void mapControl_MapPan( object sender, MapDragEventArgs e )
{
if( isDragging )
{
e.Handled = true;
}
}
private void pushpin_MouseLeftButtonDown( object sender, MouseButtonEventArgs e )
{
pushpin.CaptureMouse( );
isDragging = true;
}
private void pushpin_MouseLeftButtonUp( object sender, MouseButtonEventArgs e )
{
pushpin.ReleaseMouseCapture( );
isDragging = false;
}
private void pushpin_MouseMove( object sender, MouseEventArgs e )
{
pushpin.Location = mapControl.ViewportPointToLocation( e.GetPosition( mapControl) );
}
这将防止地图在图钉被拖动时平移。
【讨论】: