【问题标题】:draggable pushpin windows phone 7 bing maps control可拖动的图钉 windows phone 7 bing 地图控件
【发布时间】:2011-03-15 15:20:45
【问题描述】:

只是想知道是否有任何关于如何在 windows phone 7 应用程序中为地图编写可拖动图钉的资源。我看过了,只能找到有关如何为浏览器应用程序执行此操作的信息。

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

【问题讨论】:

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


    【解决方案1】:

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

    在实现这一点时,我猜您需要注意实际放置图标相对于手指的位置 - 例如如果您查看单击/按住/拖动时文本插入符号在文本块中的移动方式,那么您会看到插入符号位置在手指上方偏移,因此您始终可以看到它。

    【讨论】:

    • 感谢您的链接,问题在于它根据此链接引用了 Microsoft.Maps.MapControl:social.msdn.microsoft.com/Forums/en/windowsphone7series/thread/… 你不能在手机上这样做。
    • 我认为该链接已过时 - Bing Maps SDK 已经可用几个月了 - msdn.microsoft.com/en-us/library/ff955762.aspx - 我什至在 IronRuby 中使用过它 - script.iron7.com/#/Script/…
    • 我从昨天开始一直在研究这个问题,但我想我已经找到了自己设计的解决方案。基本上,对地图和手势进行了一些尝试,并制定了一种方法,您可以通过该方法找到地图上点击的确切位置,并使用给定纬度的图像分辨率将其与地图上的实际位置相关联以及一些与椭圆和地球上经纬线之间的距离有关的天文学公式。
    【解决方案2】:

    是的,你可以。这是一篇关于如何实现这种行为的好文章。

    Draggable PushPins

    【讨论】:

    • 也感谢您的链接,但正如我在上面向 Stuart 提到的那样,显然存在一些关于在 Windows Phone 7 应用程序中包含 Microsoft.Maps.MapControl 的问题
    【解决方案3】:

    我可以通过为 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) );
            }
    

    这将防止地图在图钉被拖动时平移。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-27
      相关资源
      最近更新 更多