有没有一种方法可以使用bing地图在windows phone 8上手动移动调整图钉位置

本文关键字:phone 移动 位置 调整 windows 一种 方法 地图 bing 可以使 有没有 | 更新日期: 2023-09-27 18:23:57

我正在开发一个使用bing映射的windows phone 8.0应用程序。我想添加一个带有我当前位置的图钉。到目前为止太好了。我没办法做的就是移动那个大头针。更确切地说,我想点击那个大头针,然后把它移动到地图上的其他地方。

我尝试过ManipulationStarted、ManipulationDelta、ManipultionCompleted等事件和网络上的其他资源,但还没有结果。

我的C#代码:

public partial class MainPage : PhoneApplicationPage
    {
        Pushpin pin = new Pushpin();
        // Constructor
        public MainPage()
        {
            InitializeComponent();
            GetCurrentPosition();
        }
        async void GetCurrentPosition()
        {
        Geolocator geolocator = new Geolocator();
        geolocator.DesiredAccuracyInMeters = 50; 
        Geoposition geoposition = await geolocator.GetGeopositionAsync();
        Grid MyGrid = new Grid();
        MyGrid.RowDefinitions.Add(new RowDefinition());
        MyGrid.RowDefinitions.Add(new RowDefinition());
        MyGrid.Background = new SolidColorBrush(Colors.Transparent);            
        pin.Content = "I'm a pin";
        pin.Foreground = new SolidColorBrush(Colors.Purple);
        pin.ManipulationDelta += pin_ManipulationDelta;
        pin.ManipulationStarted += pin_ManipulationStarted;
        pin.ManipulationCompleted += pin_ManipulationCompleted;
        MyGrid.Children.Add(pin);
        //Creating a MapOverlay and adding the Grid to it.
        MapOverlay MyOverlay = new MapOverlay();
        MyOverlay.Content = MyGrid;
        MyOverlay.GeoCoordinate = new GeoCoordinate(geoposition.Coordinate.Latitude, geoposition.Coordinate.Longitude);
        MyOverlay.PositionOrigin = new Point(0, 0.5);
        MyMap.Center = new System.Device.Location.GeoCoordinate(geoposition.Coordinate.Latitude, geoposition.Coordinate.Longitude);
        MyMap.ZoomLevel = 16;
        MyMap.CartographicMode = Microsoft.Phone.Maps.Controls.MapCartographicMode.Road;
        MapLayer MyLayer = new MapLayer();
        MyLayer.Add(MyOverlay);
        MyMap.Layers.Add(MyLayer);
        translateTransform = new TranslateTransform();
    }
    void pin_ManipulationStarted(object sender, System.Windows.Input.ManipulationStartedEventArgs e)
    {
        //MessageBox.Show("started");
    }
    void pin_ManipulationDelta(object sender, System.Windows.Input.ManipulationDeltaEventArgs e)
    {
        MessageBox.Show("moving");
         //how do a get the coordonites while I'm moving the pin?
    }
    void pin_ManipulationCompleted(object sender, ManipulationCompletedEventArgs e)
    {
        MessageBox.Show("completed");
    }
}

阿比的想法如何使针可拖动?如果我设置pin。AllowDrop=true,则抛出NotImplementedException。

提前谢谢!

有没有一种方法可以使用bing地图在windows phone 8上手动移动调整图钉位置

只是有点不同。。。

我在NZ Topo Map中使用的解决方案是在地图上覆盖一条十字线,这样用户就可以通过拖动地图而不是拖动大头针来精确定位大头针。然后,我会使用一个带有勾号和十字架的应用程序栏来表示"创建pin"answers"取消"。

只是一个供您仔细考虑的替代UI想法,它可能更容易实现,对用户来说也可能更容易。

您必须在地图上的鼠标事件上设置移动事件。这将使您能够跟踪用户移动到的位置。本质上,您将在图钉中添加一个鼠标按下事件,该事件将设置一个要捕获的标志,以允许拖动图钉。然后,您将使用地图上的鼠标移动事件来重新定位图钉,并使用地图上鼠标向上事件来关闭拖动标志。您还可能希望显示地图的平移。当鼠标按下事件触发时,尝试捕获中心值,然后在鼠标移动事件中,当拖动标志打开时,将地图的中心始终设置为该值。