开发 WinPhone SDK 开发指南 定位

定位 最后更新时间: 2021年01月22日

高德地图 Windows Phone SDK 可以实现移动客户端的定位功能,您需要初始化一个 AMapGeolocator 对象,并且设置 PositionChanged 位置回调函数,就可以获取持续的位置。初始化定位的示例代码(详见demo中MyLocation.xaml.cs)如下:

 
private void amap_Loaded(object sender, RoutedEventArgs e)  
{  
  ……  
  mylocation = new AMapGeolocator();  
  mylocation.PositionChanged += mylocation_PositionChanged;  
} 
 

定位更新时的回调函数

 
void mylocation_PositionChanged(AMapGeolocator sender, AMapPositionChangedEventArgs args)  
{  
  this.Dispatcher.BeginInvoke(() =>  
  {  
    if (marker == null)  
    {  
      //添加定位精度圈,为覆盖物中的圆  
      circle = amap.AddCircle(new AMapCircleOptions()  
      {  
        Center = args.LngLat,//圆点位置  
        Radius = (float)args.Accuracy,//半径  
        FillColor = Color.FromArgb(80, 100, 150, 255),  
        StrokeWidth = 2,//边框粗细  
        StrokeColor = Color.FromArgb(80, 0, 0, 255),//边框颜色  
      });  
      //添加我的位置图标,为覆盖物中的标注  
      marker = amap.AddMarker(new AMapMarkerOptions()  
      {  
        Position = args.LngLat,//图标的位置  
        Title = "我的位置",  
        IconUri = new Uri("Images/marker_gps_no_sharing.png", UriKind.Relative),//图标的URL  
        Anchor = new Point(0.5, 0.5),//图标中心点  
      });  
    }  
    else{  
      //更新我的位置和精度圈  
      marker.Position = args.LngLat;  
      circle.Center = args.LngLat;  
      circle.Radius = (float)args.Accuracy;//圆半径  
    }  
    //设置当前地图的经纬度和缩放级别  
    amap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(args.LngLat, 15));  
    Debug.WriteLine("定位精度:" + args.Accuracy + "米");  
    Debug.WriteLine("定位经纬度:" + args.LngLat);  
  });  
}  

显示如下图所示:

返回顶部 示例中心 常见问题 智能客服 公众号
二维码