我只有一个MapView元素的简单活动。地图加载正常,但只要我放大/缩小应用程序只是崩溃而不给我任何类型的日志(我也试过没有包过滤器,但任何有用的东西出现)。我唯一可以怀疑的是内存问题,但我不知道如何检查并最终修复它。
的活动:
public class PointsOfInterest extends AppCompatActivity implements OnMapReadyCallback {
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_map);
/* MapView */
mapView = (MapView) findViewById(R.id.mapView);
mapView.onCreate(savedInstanceState);
mapView.getMapAsync(this);
}
@Override
protected void onResume() {
super.onResume();
mapView.onResume();
}
@Override
public void onMapReady(GoogleMap map) {
map.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
}
@Override
protected void onPause() {
mapView.onPause();
super.onPause();
}
@Override
protected void onDestroy() {
mapView.onDestroy();
super.onDestroy();
}
@Override
public void onLowMemory() {
super.onLowMemory();
mapView.onLowMemory();
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
mapView.onSaveInstanceState(outState);
}
}
布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.google.android.gms.maps.MapView
android:id="@+id/mapView"
android:layout_width="match_parent"
android:layout_height="230dp" />
</LinearLayout>
更新:与片段相同的问题:
的活动:
public class PointsOfInterest extends AppCompatActivity implements OnMapReadyCallback {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layout_map);
SupportMapFragment mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mMapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
}
}
布局:
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="230dp" />
</LinearLayout>
顺便说一下,如果我尝试使用“match_parent”而不是230dp,应用程序会在我移动地图或放大/缩小时(换句话说,当我必须加载新地图数据时)重新启动。地图越小,我可以使用的时间越长。 这让我更加想到内存问题(无论如何,RAM使用量只有40MB,加载地图时峰值为50MB,立即GC再次降低到40MB)
答案 0 :(得分:0)
显然您正在尝试使用lite mode中的地图。该文档说,在该模式下,不允许用户平移或缩放。
如果您确实需要平移/缩放功能,请改为:
1)将此片段添加到您的活动布局xml:
...
<fragment
android:id="@+id/map"
class="com.google.android.gms.maps.SupportMapFragment"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" />
...
2)在您的活动onCreate
上初始化这样的地图:
mMapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mMapFragment.getMapAsync(this);