Ma question est la suivante: est-ce que quelqu’un sait comment configurer Google Maps, pour ouvrir à la fois mon emplacement et une vue agrandie?
Actuellement, la vue principale s’ouvre en Afrique, tout en zoomant.
Et donc j’ai cherché des jours maintenant, et tout ce que je peux trouver sont:
1) Vous ne pouvez pas animer deux choses (comme un zoom avant et aller à ma position) dans une carte Google? Donc, si je peux trouver comment définir le zoom avant de configurer l’animation, ce problème sera résolu. Cela tend à être le problème, vous pouvez en changer un, mais pas les deux.
2) J’ai trouvé d’autres classes qui pourraient être utiles, mais il n’y a aucune aide sur la façon de configurer le code pour que la classe puisse manipuler la carte Google.
C’est le code que je retiens jusqu’ici, certains travaux, d’autres pas. Certains pensaient que cela pourrait être utile plus tard.
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); Ssortingng 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; } }
Vous ne pouvez pas animer deux choses (comme un zoom avant et aller à ma position) dans une carte Google?
Du sharepoint vue du codage, vous les feriez séquentiellement:
CameraUpdate center= CameraUpdateFactory.newLatLng(new LatLng(40.76793169992044, -73.98180484771729)); CameraUpdate zoom=CameraUpdateFactory.zoomTo(15); map.moveCamera(center); map.animateCamera(zoom);
Ici, je déplace d’abord la caméra, puis j’anime la caméra, bien que les deux puissent être des animateCamera()
. Que GoogleMap
consolide en un seul événement, je ne peux pas dire, car il passe trop vite. 🙂
Voici l’exemple de projet à partir duquel j’ai extrait le code ci-dessus.
Désolé, cette réponse est erronée. Voir la réponse de Rob pour un moyen de le faire en un seul coup, en créant un CameraPosition
, puis en créant un CameraUpdate
partir de ce CameraPosition
.
Il est possible de changer d’emplacement, de zoom, de relèvement et d’inclinaison en une seule fois. Il est également possible de définir la durée de l’appel 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));
Regardez les documents ici:
https://developers.google.com/maps/documentation/android/views?hl=en-US#moving_the_camera
c’est une solution simple pour votre question
LatLng coordinate = new LatLng(lat, lng); CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5); map.animateCamera(yourLocation);
Essayez de cette façon –
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(Ssortingng provider) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(Ssortingng provider) { // TODO Auto-generated method stub } @Override public void onStatusChanged(Ssortingng provider, int status, Bundle extras) { // TODO Auto-generated method stub }
}
Vous pouvez également définir les deux parameters comme,
mMap.moveCamera( CameraUpdateFactory.newLatLngZoom(new LatLng(21.000000, -101.400000) ,4) );
Cela localise votre carte sur une position et un zoom spécifiques. Je l’utilise sur la mise en place de ma carte.
C’est une réponse tardive mais je pense que ça va aider. Utilisez cette méthode:
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(); } }
Utilisez cette méthode après avoir chargé la carte. À votre santé!
La façon la plus simple de le faire est d’utiliser CancelableCallback. Vous devez vérifier que la première action est terminée, puis appeler le second:
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.Ajoutez du code XML dans votre mise en page pour afficher les cartes.
2.Activez google maps api puis obtenez la clé de l’API ci-dessous.
3. Ajoutez ce code dans oncreate.
MapFragment mapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); mapFragment.getMapAsync(UpadateProfile.this);
4.Ajouter ce code après oncreate. puis accéder à l’emplacement actuel avec le marqueur placé dans ce
@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); Ssortingng all_vals = Ssortingng.valueOf(point); Ssortingng[] separated = all_vals.split(":"); Ssortingng latlng[] = separated[1].split(","); MyLat = Double.parseDouble(latlng[0].sortingm().subssortingng(1)); MyLong = Double.parseDouble(latlng[1].subssortingng(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(Ssortingng provider, int status, Bundle extras) { } @Override public void onProviderEnabled(Ssortingng provider) { } @Override public void onProviderDisabled(Ssortingng provider) { }
La réponse de @ CommonsWare ne fonctionne pas vraiment. J’ai trouvé que cela fonctionne correctement:
map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-33.88,151.21), 15));
Vous ne pouvez pas animer deux choses (comme un zoom avant et aller à ma position) dans une carte Google.
Donc, utilisez déplacer et animer la caméra pour zoomer
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)));