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.在調試的時候發現周邊的熱點信息
從而可以進一步利用這些信息。