在上一篇文章《Android WorldWind的视角变化时的动画效果(一)》中,已经说过在安卓设备上使用worldwind做开发时,地球视角转换时的动画效果实现的方法。那篇文章写的起始点,和结束点经纬度坐标都是程序里面写的的,这样就不是很人性化,比较死板。在实际开发中,起始点可能是任意位置,那么如何实现从任意位置转到指定的技术点呢?下面就来记录下。
先上效果图
要实现这个效果就需要系统获取当前屏幕中心所在的经纬度和视角高。所以首先写一个获取当前位置的方法
/**
* @date: 2020/4/10 13:23
* @author: zhj
* @description 获取当前视角的经纬度和视角高
*/
public Position currentViewPosition(){
Position position=new Position();
double lat=worldWindow.getNavigator().getLatitude();
double alt=worldWindow.getNavigator().getAltitude();
double lon=worldWindow.getNavigator().getLongitude();
position.set(lat,lon,alt);
return position;
}
现在获取到了当前位置信息latitude、longitude、altitude。
下面需要写一下对三维球的监听,并初始化。
/**
* 对三维球进行初始化,设置navigatorListener
*/
private void initWorldWindow() {
NavigatorListener navigatorListener = new NavigatorListener() {
@Override
public void onNavigatorEvent(WorldWindow wwd, NavigatorEvent event) {
event.getNavigator().getAsLookAt(wwd.getGlobe(), lookAt);
event.getNavigator().getAsCamera(wwd.getGlobe(), camera);
//setSecondViewPosition();
double a=currentViewPosition().altitude;
}
};
worldWindow.addNavigatorListener(navigatorListener);
}
代码中a就是获取到的当前位置的高度值。经纬度值获取方法一样。
调用 initWorldWindow()方法,进行初始化。
private LookAt lookAt=new LookAt();
private Camera camera=new Camera();
lookAt和camera要实例化。
之后在需要的地方调用视角转换动画方法即可。
setAnimator(currentViewPosition(),shanghaiPosition,3000);
setAnimator(Position startP, Position endP, long duration)方法在上一章中有写;
currentViewPosition():当前视角的位置;
shanghaiPosition:上海的位置;
3000:动画时长。
到此,程序结束。