如何在WPF中将标记从一个位置移动到另一个位置?

时间:2016-09-01 13:15:27

标签: wpf gmap.net

我正在使用GMap.net进行谷歌地图,我可以在地图上放置标记。

我希望允许用户自由移动标记以将其放置在地图上的其他位置。

我已经使用了这个代码,其中我使用图像作为标记并添加了事件来移动图像标记,但每当我尝试移动图像时,整个地图就开始移动。 如果有任何可用于标记移动的事件,请建议我。

注意:这适用于WPF

private void PlaceCamera_Click(object sender, RoutedEventArgs e)
{
  Double lat = Convert.ToDouble(this.Lattitude.Text);
  Double lng = Convert.ToDouble(this.Longitude.Text);
  marker = new GMapMarker(new PointLatLng(lat,lng));      

  Image newImage = new Image();
  Canvas.SetZIndex(newImage, 99);
  newImage.MouseLeftButtonDown += (ss, ee) =>
  {
    firstPoint = ee.GetPosition(this);
    newImage.CaptureMouse();
  };
  newImage.MouseMove += (ss, ee) =>
  {
    if (ee.LeftButton == MouseButtonState.Pressed)
    {
      //-- Create temp point
      Point temp = ee.GetPosition(this);
      Point res = new Point(firstPoint.X - temp.X, firstPoint.Y - temp.Y);

      //-- Update image location
      Canvas.SetLeft(newImage, Canvas.GetLeft(newImage) - res.X);
      Canvas.SetTop(newImage, Canvas.GetTop(newImage) - res.Y);

      //-- Update first point
      firstPoint = temp;
    }
  };
  newImage.MouseUp += (ss, ee) => { newImage.ReleaseMouseCapture(); };

  BitmapImage testim = new BitmapImage();
  testim.BeginInit();
  testim.UriSource = new Uri("F:\\test.png");
  testim.EndInit();

  newImage.Source = testim;
  newImage.Height = 30;
  newImage.Width = 30;

  marker.Shape = newImage;
  MainMap.Markers.Add(marker);
}

1 个答案:

答案 0 :(得分:1)

最后,我从以下链接中找到了解决方案

点击[此处](https://github.com/radioman/greatmaps

观察CustomMarkerDemo.xaml.cs并将其添加到您的程序中。此自定义标记具有我所需的点击事件!