您的位置:首页 > 其它

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

2012-08-23 11:15 429 查看
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
查询关键字所在城市的区号或名称(必填),全国为totalcallBack类型: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.在调试的时候发现周边的热点信息



从而可以进一步利用这些信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: