【问题标题】:Google Map Undesirably Resets camera zoom out谷歌地图意外重置相机缩小
【发布时间】:2016-06-22 22:56:51
【问题描述】:

我有基于谷歌地图的应用程序,允许用户查看标记。我遇到的问题是,当我放大以查看地图上的所有标记时,几秒钟后地图重置为原始缩放级别,我无法查看所有标记。

我希望地图保持在用户缩放级别,但我无法想出逻辑。这是我的代码:

@Override
protected void onPostExecute(final ArrayList<Item> arrayList) {
    if(isCancelled()) return;
    if(googleMap!=null) {
        googleMap.clear();
        mMarker2Item.clear();
        LatLngBounds.Builder boundBuilder = new LatLngBounds.Builder();
        for (Item item : arrayList) {
            MarkerOptions opts = new MarkerOptions()
                    .position(item.location())
                    .title(item.name);
            if(item.iconBitmap!=null){
                opts = opts.icon(BitmapDescriptorFactory.fromBitmap(item.iconBitmap));
            }
            Marker newMarker = googleMap.addMarker(opts);
            newMarker.setSnippet(item.vicinity);
            mMarker2Item.put(newMarker, item);
            boundBuilder.include(item.location());
        }
        try {
            CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(boundBuilder.build(), 200);
            googleMap.moveCamera(cameraUpdate);
            googleMap.animateCamera(cameraUpdate, 1000, null);
        } catch (Exception ex) {

        }
    } else mHandler.postDelayed(new Runnable() {
        @Override
        public void run() {
            onPostExecute(arrayList);
        }
    }, 500);
}

【问题讨论】:

  • 你可以使用一个标志,并且只在 AsyncTask 第一次运行时执行 CameraUpdate 的东西。
  • 谢谢@DanielNugent 我仍在努力熟悉整个编码方面和逻辑。你能提供一个代码示例吗?

标签: android google-maps android-studio


【解决方案1】:

只需在Activity中定义一个布尔标志作为类成员变量(前提是你的AsyncTask是Activity的子类):

public boolean firstTime = true;

然后,在移动相机之前检查布尔标志:

if (firstTime) {
  firstTime = false;
  CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngBounds(boundBuilder.build(), 200);
  googleMap.moveCamera(cameraUpdate);
  googleMap.animateCamera(cameraUpdate, 1000, null);
}

【讨论】:

  • 先生,您真是个天才!这完美!谢谢!!! @DanielNugent
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-31
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多