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.在調試的時候發現周邊的熱點信息

   

從而可以進一步利用這些信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM