リア充爆発日記

You don't even know what ria-ju really is.

Android Google Maps v1でやってたことをv2でやる方法

随時追記型メモ。

MapViewの配置

private GoogleMap mMap;
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.my_map)).getMap();
}
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:padding="10dp"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
~snip~
    <fragment android:id="@+id/my_map"
              android:name="com.google.android.gms.maps.SupportMapFragment"
              android:layout_width="wrap_content"
              android:layout_height="wrap_content"
            />
~snip~
</LinearLayout>

API level12+の場合はSupportMapFragmentじゃなくてMapFragmentでいいんじゃないかな。

MapView.getController().animateTo()

googleMap.animateCamera(CameraUpdateFactory.newLatLng());

MapView.setBuiltInZoomControls()

googleMap.getUiSettings().setZoomControlsEnabled(true);

マップの中心の位置を取得

LatLng latLng = googleMap.getCameraPosition().target;

Markerの設置

MarkerOptions markerOptions = new MarkerOptions();
            markerOptions.position(latLng);
            markerOptions.title("hoge");
            Marker marker = googleMap.addMarker(markerOptions);

MyLocationOverlay

自力実装。

public class MyActivity extends MyFragmentActivity implements LocationListener {

~snip~
    private LocationManager mLocationManager;
    private GoogleMap mMap;
~snip~

    public void onCreate(Bundle savedInstanceState) {
~snip~
        mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.my_map)).getMap();
        mMap.setMyLocationEnabled(true);

        mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);

        Criteria locationCriteria = new Criteria();
        locationCriteria.setAccuracy(Criteria.ACCURACY_FINE);
        mLocationManager.requestLocationUpdates(mLocationManager.getBestProvider(locationCriteria, true), 1L, 2F, this);
    }

    public void onPause() {
        super.onPause();
        mLocationManager.removeUpdates(this);
    }

    @Override
    public void onLocationChanged(Location location) {
        Log.d(TAG, "location changed!");
    }

普通に実装しているだけなのでFirstFixとか欲しい場合はフラグ持って制御するしかないかな。。。