windowphone 高德地图之搜索定位地点的周边热点

1.在这次学习中首先是根据手机位置服务获取当前所在位置的经纬度。

          double x = 39.9081397215191;
         double y = 116.324735831984;

        /// <summary>
        /// 获取定位经纬度
         /// </summary>
        private void GetStartGeoCoordinate()
        {
            GeoCoordinateWatcher gwatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);
            gwatcher.PositionChanged += (sender, e) =>
            {
                x = e.Position.Location.Latitude;//纬度
                   y = e.Position.Location.Longitude;//经度
            };
            gwatcher.Start();
        }

2.获取经纬以后,由于在地图中经纬度坐标存在偏差,故需要调用高德地图api中的MRGCSearch 类中的MRGCSearch.GPSToOffset 方法进行经纬度坐标的纠偏。

 

 private void OffSetReGeoCodeLacation(double x,double y)
        {

            MRGCSearch.GPSToOffset(new double[] { y}, new double[] {x}, (mr) =>
                {
                    MPOISearch.PoiSearchByCenLngLat(mr.RGCItemList[0].LngX, mr.RGCItemList[0].LatY, "", "010", searchpoiCenLnglat);
                });

        }


3.在GPSToOffset方法中的Action<MRGCSearchResult> action对象中的RGCItemList[0].LatY,RGCItemList[0].LatX获取当前纠偏后的坐标,从而可以根据MPOISearch类中的PoiSearchByCenLngLat方法


centerPoiX
类型:System.Double
查询中心点经度
centerPoiY
类型:System.Double
查询中心点纬度
keywords
类型:System.String
查询关键字(必填,可以为空字符串,用户只按类型查询)
city
类型:System.String
查询关键字所在城市的区号或名称(必填),全国为total
callBack
类型:System.Action<(Of <(<'MPOISearchResult>)>)>
回调方法
public
static void PoiSearchByCenLngLat(
   
double centerPoiX,
   
double centerPoiY,
   
string keywords,
   
string city,
    Action
<MPOISearchResult> callBack
)

 

根据中心点的坐标(x,y), 查询周边POI。

5.

 其中callBack类型:MPOISearchResult的回调方法

 public void searchpoiCenLnglat(MPOISearchResult sender)
        {
            if (sender.Erro == null)
            {
                List<MOverlay> list = new List<MOverlay>();
                for (int i = 0; i < sender.POIs.Count; i++)
                {
                    MMarker mk;

                    mymap.Children.Add(mk = new MMarker()
                    {
                        LngLat = new MLngLat(sender.POIs[i].X, sender.POIs[i].Y),
                        TipFrameworkElement = new MTip() { Title = sender.POIs[i].Name, ContentText = sender.POIs[i].Address }
                       
                    });
                    list.Add(mk);
                }

                //根据覆盖物来调整视野
                mymap.SetFitview(list);
            }
            else
            {
                MessageBox.Show(sender.Erro.Message);
            }
        }

 6.在调试的时候发现周边的热点信息

   

从而可以进一步利用这些信息。

posted @ 2012-08-23 11:15  MicroLeo  阅读(3174)  评论(1编辑  收藏  举报