Google Maps v2: establezca mi ubicación y haga zoom

Mi pregunta es, ¿alguien sabe cómo configurar los mapas de Google, para abrir mi ubicación y en una vista ampliada?

Actualmente, la vista principal se abre hacia África, alejándose todo el tiempo.

Y así he estado buscando durante días, y todo lo que puedo encontrar son:

1) ¿No puedes animar dos cosas (como acercar y ir a mi ubicación) en un mapa de google? Entonces, si puedo descubrir cómo configurar el zoom antes de configurar la animación, entonces este problema se resolverá. Eso tiende a ser el problema, puede cambiar uno, pero no ambos.

2) He encontrado otras clases que pueden ser útiles, pero no hay ayuda sobre cómo configurar el código para que la clase pueda manipular el mapa de google.

Este es el código que he tenido hasta ahora, algunos trabajos, otros no. Algunos pensé que podría ser útil más adelante.

package com.MYWEBSITE.www; import com.google.android.gms.maps.CameraUpdateFactory; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.LatLng; import android.content.Context; import android.location.Criteria; import android.location.Location; import android.location.LocationManager; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.Menu; public class MainActivity extends FragmentActivity { private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); map.setMyLocationEnabled(true); //LocationSource a = (LocationSource) getSystemService(Context.LOCATION_SERVICE); //LocationManager b = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //map.setLocationSource(a); Criteria criteria = new Criteria(); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); String provider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); double lat = location.getLatitude(); double lng = location.getLongitude(); LatLng coordinate = new LatLng(lat, lng); //CameraPosition.Builder x = CameraPosition.builder(); //x.target(coordinate); //x.zoom(13); //Projection proj = map.getProjection(); //Point focus = proj.toScreenLocation(coordinate); //map.animateCamera(CameraUpdateFactory.newLatLng(coordinate)); map.animateCamera(CameraUpdateFactory.zoomBy(13)); //map.moveCamera(CameraUpdateFactory.newLatLng(coordinate)); ////LatLngBounds bounds = mMap.getProjection().getVisibleRegion().latLngBounds; } } 

No puede animar dos cosas (como acercar y ir a mi ubicación) en un mapa de google?

Desde un punto de vista de encoding, los harías secuencialmente:

  CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(40.76793169992044, -73.98180484771729)); CameraUpdate zoom=CameraUpdateFactory.zoomTo(15); map.moveCamera(center); map.animateCamera(zoom); 

Aquí, muevo la cámara primero, luego animé la cámara, aunque ambas podrían ser llamadas animateCamera() . Si GoogleMap consolida en un solo evento, no puedo decirlo, ya que pasa demasiado rápido. 🙂

Aquí está el proyecto de muestra del cual saqué el código anterior.


Lo siento, esta respuesta es defectuosa. Consulte la respuesta de Rob para CameraPosition cómo hacer esto de una sola vez, creando una CameraPosition y luego creando una CameraUpdate desde esa CameraPosition .

Es posible cambiar la ubicación, el zoom, el rumbo y la inclinación, todo de una vez. También es posible establecer la duración de la llamada animateCamera() .

 CameraPosition cameraPosition = new CameraPosition.Builder() .target(MOUNTAIN_VIEW) // Sets the center of the map to Mountain View .zoom(17) // Sets the zoom .bearing(90) // Sets the orientation of the camera to east .tilt(30) // Sets the tilt of the camera to 30 degrees .build(); // Creates a CameraPosition from the builder map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition)); 

Eche un vistazo a los documentos aquí:

https://developers.google.com/maps/documentation/android/views?hl=en-US#moving_the_camera

esta es una solución simple para tu pregunta

 LatLng coordinate = new LatLng(lat, lng); CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5); map.animateCamera(yourLocation); 

Intenta de esta manera –

 public class SummaryMapActivity extends FragmentActivity implements LocationListener{ private GoogleMap mMap; private LocationManager locationManager; private static final long MIN_TIME = 400; private static final float MIN_DISTANCE = 1000; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.summary_mapview); if (mMap == null) { // Try to obtain the map from the SupportMapFragment. mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)) .getMap(); // Check if we were successful in obtaining the map. if (mMap != null) { mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); } } mMap.setMyLocationEnabled(true); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME, MIN_DISTANCE, this); } @Override public void onLocationChanged(Location location) { LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude()); CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 15); mMap.animateCamera(cameraUpdate); locationManager.removeUpdates(this); } @Override public void onProviderDisabled(String provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } 

}

También podría establecer los dos parámetros como,

 mMap.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(21.000000, -101.400000) ,4) ); 

Esto ubica su mapa en una posición específica y el zoom. Lo uso en la configuración de mi mapa.

Es una respuesta tardía, pero creo que ayudará. Usa este método:

 protected void zoomMapInitial(LatLng finalPlace, LatLng currenLoc) { try { int padding = 200; // Space (in px) between bounding box edges and view edges (applied to all four sides of the bounding box) LatLngBounds.Builder bc = new LatLngBounds.Builder(); bc.include(finalPlace); bc.include(currenLoc); googleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(bc.build(), padding)); } catch (Exception e) { e.printStackTrace(); } } 

Use este método después de cargar el mapa. ¡Aclamaciones!

La forma más sencilla de hacerlo es usar CancelableCallback. Debe verificar que la primera acción se haya completado y luego llamar al segundo:

 mMap.animateCamera(CameraUpdateFactory.newLatLngBounds(bounds, size.x, height, 0), new CancelableCallback() { @Override public void onFinish() { CameraUpdate cu_scroll = CameraUpdateFactory.scrollBy(0, 500); mMap.animateCamera(cu_scroll); } @Override public void onCancel() { } }); 

1.Agregue el código xml en su diseño para mostrar mapas.

2. Admite google maps api luego obtén un lugar clave de API que a continuación.

   

3.Agregue este código en oncreate.

  MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(UpadateProfile.this); 

4. Añada este código después de oncreate. luego acceda a la ubicación actual con el marcador colocado en ese

 @Override public void onMapReady(GoogleMap rmap) { DO WHATEVER YOU WANT WITH GOOGLEMAP map = rmap; setUpMap(); } public void setUpMap() { map.setMapType(GoogleMap.MAP_TYPE_HYBRID); map.setMyLocationEnabled(true); map.setTrafficEnabled(true); map.setIndoorEnabled(true); map.getCameraPosition(); map.setBuildingsEnabled(true); map.getUiSettings().setZoomControlsEnabled(true); markerOptions = new MarkerOptions(); markerOptions.title("Outlet Location"); map.setOnMapClickListener(new GoogleMap.OnMapClickListener() { @Override public void onMapClick(LatLng point) { map.clear(); markerOptions.position(point); map.animateCamera(CameraUpdateFactory.newLatLng(point)); map.addMarker(markerOptions); String all_vals = String.valueOf(point); String[] separated = all_vals.split(":"); String latlng[] = separated[1].split(","); MyLat = Double.parseDouble(latlng[0].trim().substring(1)); MyLong = Double.parseDouble(latlng[1].substring(0,latlng[1].length()-1)); markerOptions.title("Outlet Location"); getLocation(MyLat,MyLong); } }); } public void getLocation(double lat, double lng) { Geocoder geocoder = new Geocoder(UpadateProfile.this, Locale.getDefault()); try { List
addresses = geocoder.getFromLocation(lat, lng, 1); } catch (IOException e) { TODO Auto-generated catch block e.printStackTrace(); Toast.makeText(this,e.getMessage(),Toast.LENGTH_SHORT).show(); } } @Override public void onLocationChanged(Location location) { } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { } @Override public void onProviderDisabled(String provider) { }

La respuesta de @ CommonsWare en realidad no funciona. Descubrí que esto funciona correctamente:

 map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-33.88,151.21), 15)); 

No puede animar dos cosas (como acercar y ir a mi ubicación) en un mapa de google.
Así que use mover y animar la cámara para ampliar

 googleMapVar.moveCamera(CameraUpdateFactory.newLatLng(LocLtdLgdVar)); googleMapVar.animateCamera(CameraUpdateFactory.zoomTo(10)); 
 gmap.animateCamera(CameraUpdateFactory.newCameraPosition(new CameraPosition(new LatLng(9.491327, 76.571404), 10, 30, 0)));