可视区域操作 最后更新时间: 2021年01月22日
可视区域的位置
地图可视区域的位置由中心点(经纬度坐标)、缩放级别、旋转角度和倾斜角度四个属性来定义,对应高德地图 Windows Phone SDK 类为 CameraPosition,通过构建该对象定义地图的可视区域。
(1)中心点(target):地图的中心位置(经度和纬度);
(2)缩放级别(zoom):地图缩放级别范围为【4-20级】,值越大地图越详细,反之;
(3)旋转角度(bearing):角度范围为:【0.f-360.f】,正北方向为0度,逆时针旋转值会增加;
(4)倾斜角度 (tile):角度的范围为【0.f-45.f】,0度时建筑物没有远近关系,随着角度增加,建筑物的远近效果比较明显,产生立体效果。
移动可视区域
可以设置地图的可视区域,使用 CameraUpdateFactory 类构造 CameraUpdate 对象。然后根据得到的 CameraUpdate 对象,调用 AMap.moveCamera(CameraUpdate) 移动可视区域。示例代码(详见demo中CameralIntroduce.xaml.cs)如下:
private void amap_Loaded(object sender, RoutedEventArgs e)
{
amap.MoveCamera(CameraUpdateFactory.NewLatLngZoom(new LatLng(39.90923, 116.397428), 13));
}
您也可以实现以动画渐进的效果来展示可视区域的移动过程, 具体实现过程为: 使用 CameraUpdateFactory 类构造 CameraUpdate 对象。然后根据得到的 CameraUpdate 对象,调用AMap.AnimateCamera (CameraUpdate,double) 方法来移动可视区域。在动画效果的播放过程中,您也可以使用 AMap.StopAnimation() 方法来停止可视区域的移动。示例代码(详见demo中Animate.xaml.cs)如下:
private void Button_Click(object sender, RoutedEventArgs e)
{
amap.AnimateCamera(CameraUpdateFactory.NewLatLngZoom(new Latlng(30.679879, 104.064855),17),1);
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
amap.StopAnimation();
}
CameraUpdateFactory 除了提供 NewLatLngZoom 方法外,还提供了 ZoomIn、ZoomOut、NewCameraPosition、ZoomTo 等方法,详见参考手册。
监听地图可视区域变化
当地图可视区域变化(地图移动、旋转等)时,您可以监听地图的变化,获取地图当前可视区域中心点坐标、倾斜角度、旋转角度和当前的缩放级别。当可视区域改变时回调的接口为 CameraChangeListener,示例代码(详见demo中CameralIntroduce.xaml.cs)如下:
amap.CameraChangeListener += amap_CameraChangeListener;
private void amap_CameraChangeListener(object sender, AMapEventArgs e)
{
cameraloutput1.Text = "target:" + e.CameraPosition.target.ToString();
cameraloutput2.Text = "tilt:" + e.CameraPosition.tilt.ToString();
cameraloutput3.Text = "bearing:" + e.CameraPosition.bearing.ToString();
cameraloutput4.Text = "zoom:" + e.CameraPosition.zoom.ToString();
}
显示如下图所示: