繁体   English   中英

频繁打开和关闭Android Android Google Maps Zoom时无法正确调整位置和活动崩溃

[英]Android Google Maps Zoom not to right Location and Activity Crash when high frequently open and close

我在Android中使用GoogleMaps的mapMapfragment遇到了问题。

我使用了这个方法,必须重写它:

@Override
public void onMapReady(GoogleMap googleMap) {

    gm = googleMap;
    gm.setMapType(GoogleMap.MAP_TYPE_HYBRID);
    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        Toast.makeText(getApplicationContext(), getApplicationContext().getResources().getString(R.string.choose_festival_gps_disabled), Toast.LENGTH_SHORT).show();
    } else {
        gm.setMyLocationEnabled(true);
    }
    gm.getUiSettings().setZoomControlsEnabled(true);
    gm.addMarker(new MarkerOptions().position(new LatLng(latitude(), longitude())).title(name()));
    gm.moveCamera(CameraUpdateFactory.newLatLng(new LatLng(latitude(), longitude())));
    gm.animateCamera(CameraUpdateFactory.zoomTo(15));

}

然后,我在异步任务中将此称为:

((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMapAsync(Activity.this);

现在有两个问题,我已经搜索了很长时间,但是不知道如何解决它:

  1. 地图缩放不完全符合我的位置,可能在它的北部5公里处。
  2. 如果我经常频繁打开和关闭“活动”,则会遇到以下致命异常。

    java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)'

1.地图缩放不完全符合我的位置,可能在它的北部5公里处。

您可以检查此SO线程 建议将LocationSource添加到您的GoogleMap并响应onLocationChanged事件。 您可以在此处检查示例代码。

2.如果我频繁打开和关闭活动,则出现以下致命异常。

也许您正在尝试找到一个不存在的片段。 或者,您可能正在尝试从片段的onCreateView()方法中的另一个片段中获取地图片段。 在此SO帖子中已说明。 您还可以在此处看到,如果您使用的是特定版本的Google Play服务,但Gradle构建会选择最新版本,则可能会遇到该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM