【问题标题】:maps api2 animateCamera speed problemsmaps api2 animateCamera 速度问题
【发布时间】:2012-12-23 20:11:46
【问题描述】:

我正在尝试学习 android,并使用新的 googlemaps v2 api 玩应用程序。

我有几个菜单项,一个缩放到当前位置,一个最终会缩放到另一个位置。第一个(下面代码中的 show_horizo​​n)使地图能够旋转,第二个将地图设置为静态,屏幕顶部为北。

我已将它们都设置为 6 秒长的延迟,但 show_horizo​​n() 似乎忽略了速度设置,而 show_iss() 尊重它。

此外,一旦进入旋转模式,如果我在地图上滚动,触发器 show_horizo​​n() 现在将遵循速度设置。

所以当我从非旋转切换到旋转时,它似乎只忽略代码,但当我走另一条路时它尊重它。我曾尝试在切换时停止监听器,以防它中断相机动画,但没有任何区别?

欢迎提供任何线索或想法。

谢谢

这里是代码。

我有一个传感器监听器像这样获取手机的方位:

private SensorEventListener get_bearing = new SensorEventListener() {
    @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {
    }
    @Override
    public void onSensorChanged(SensorEvent event) {
      float azimuth = event.values[0];
      set_bearing(azimuth);
    }
  }; 

private void set_bearing(float azimuth) {
    if (!rotate_view) {
        bearing = 0;
    } else {
        if (bearing != Math.round(azimuth)) {
            bearing = Math.round(azimuth);
            update_map();
        }
    }
}

以及将地图更改为旋转或不旋转的几种方法:

private void show_horizon() {
    current_pos = new LatLng(gps.getLatitude(), gps.getLongitude());
    rotate_view = true;
    tilt = 30;
    zoom_level = 14;
    stop_listener();
    update_map(6000);
    start_listener();
}

private void show_iss() {
    rotate_view = false;
    bearing = 0;
    tilt = 0;
update_map(6000);       
}

以及我更新相机位置的代码:

private void update_map() {update_map(100);}   
private void update_map(int speed) {
    if (current_pos != null) {
        CameraPosition cameraPosition = new CameraPosition.Builder()
        .target(current_pos)      
        .zoom(zoom_level)               
        .bearing(bearing)                
        .tilt(tilt)                   
        .build();               
        gmap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition), speed, null);
    }
}

【问题讨论】:

    标签: android google-maps-api-2


    【解决方案1】:

    经过多次试验和错误,这对我有用:

     public void openMarker(Marker marker) {
    
        marker.showInfoWindow();
        CameraUpdate center = CameraUpdateFactory.newLatLng(marker.getPosition());
        mMap.animateCamera(center, 400, null);
    }
    

    mMap 当然是我的谷歌地图对象。

    mMap = ((SupportMapFragment)(getFragmentManager().findFragmentById(R.id.googleMap))).ge‌​tMap();
    

    【讨论】:

    • 请注意,根据我自己的反复试验,Google 的原始相机动画持续时间约为300 毫秒。
    猜你喜欢
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2011-05-15
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多