可拖动的图钉窗口电话7 bing地图控制

时间:2011-03-15 15:20:45

标签: c# silverlight windows-phone-7 bing-maps

只是想知道如何为windows phone 7应用程序中的地图编程可拖动图钉有任何不错的资源。我看起来很好看,只能找到有关如何为浏览器应用程序执行此操作的信息。

理想情况下,我希望用户能够点击图钉并将其拖动到地图上的某个位置,但是,我可以想到这样做的唯一方法是让用户拖动地图和图钉仍然是地图的中心。

3 个答案:

答案 0 :(得分:6)

我还没有在WP7应用程序上看到过这个问题 - 但这里是对Silverlight 3的描述 - http://pietschsoft.com/post/2010/05/30/Draggable-Pushpins-using-Bing-Maps-Silverlight-Control.aspx

执行此操作时,我猜你要小心实际放下与手指相关的图标 - 例如如果您在单击/按住/拖动时查看文本插入符在文本块中的移动方式,那么您将看到插入符号位置偏移到手指上方,以便您始终可以看到它。

答案 1 :(得分:4)

是的,你可以。这是一个很好的写作如何实现这种行为。

Draggable PushPins

答案 2 :(得分:2)

我可以通过为MouseMove添加事件处理程序并将图钉更新到鼠标位置来拖动图钉。

<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) );
        }

这样可以防止在拖动图钉时平移地图。