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とか欲しい場合はフラグ持って制御するしかないかな。。。