最近在项目碰到一种需求,百度地图上做车辆行驶历史回放的时候,要判断点是否在手机可视范围内,如果要超出可视范围,就将当前点转到屏幕中心位置,在网上查了下没什么结果,后来发现可以将百度地图坐标转换成手机屏幕坐标,有了这个思路就好办了。
具体代码如下:
Point point= mMapView.getProjection().toPixels(p.get(temp-1), null);//将地图坐标转换成屏幕坐标,p.get(temp-1)获取的是一个GeoPoint
if(point.x < 0 || point.x > pt.x*2 || point.y < 0 || point.y > pt.y*2) //pt为屏幕中心坐标
{
mapController.animateTo(p.get(temp));
}
百度地图3.0.0以后版本
Point pt= mBaiduMap.getMapStatus().targetScreen;
Point point= mBaiduMap.getProjection().toScreenLocation(line.get(temp - 1).getPoint());
if(point.x < 0 || point.x > pt.x*2 || point.y < 0 || point.y > pt.y*2)
{
mBaiduMap.animateMapStatus(MapStatusUpdateFactory.newLatLng(line.get(temp).getPoint()));
}