2

アプリで使用maps api v2しています。現在の場所とターゲットの場所を地図上に表示して、両方の場所が (可能な限り最大のズーム レベルで) 画面に表示されるようにする必要があります。これが私がこれまでに試したことです...

googleMap = ((SupportMapFragment) getFragmentManager().findFragmentById(R.id.mapFragment)).getMap();

 if(googleMap != null){

        googleMap.setMyLocationEnabled(true);
        LatLng targetLocationLatLng = new LatLng(modelObject.getLattitude(), modelObject.getLongitude());
        LatLng currentLocationLatLng = new LatLng(this.currentLocationLattitude, this.currentLocationLongitude);
        googleMap.addMarker(new MarkerOptions().position(targetLocationLatLng).title(modelObject.getLocationName()).icon(BitmapDescriptorFactory.fromResource(R.drawable.location_icon)));
        LatLngBounds bounds = new LatLngBounds(currentLocationLatLng, targetLocationLatLng);
        googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 3));

    }

次の理由により、アプリは強制終了されます: java.lang.IllegalStateException: Mapサイズは 0 であってはなりません。ほとんどlayoutの場合、マップ ビューでまだ​​発生していません。

可能な最大ズームレベルを取得するにはどうすればよいですか? 私を助けてください。

4

2 に答える 2

19

私のプロジェクトでは、com.google.android.gms.maps.model.LatLngBounds.Builder

ソースコードに適応させると、次のようになります。

Builder boundsBuilder = new LatLngBounds.Builder();
boundsBuilder.include(currentLocationLatLng);
boundsBuilder.include(targetLocationLatLng);
// pan to see all markers on map:
LatLngBounds bounds = boundsBuilder.build();
googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bounds, 3));
于 2013-03-05T14:05:01.537 に答える