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.在调试的时候发现周边的热点信息
从而可以进一步利用这些信息。