La mia domanda è: qualcuno sa come impostare google maps, per aprire sia la mia posizione che in una visualizzazione ingrandita?Google Maps v2 - imposta sia la mia posizione che lo zoom
Attualmente, la vista principale si apre verso l'Africa, completamente ridimensionata.
E così ho cercato per giorni ormai, e tutto quello che posso trovare sono:
1) Non è possibile animare due cose (come lo zoom in e andare alla mia posizione) in una mappa di google? Quindi, se riesco a capire come impostare lo zoom prima di impostare l'animazione, allora questo problema sarebbe risolto. Questa tendenza tende ad essere il problema, puoi cambiarne una, ma non entrambe.
2) Ho trovato altre classi che potrebbero essere utili, ma non c'è aiuto su come impostare il codice in modo che la classe possa manipolare la mappa di google.
Questo è il codice che ho tenuto fino ad ora, alcuni lavori, altri no. Alcuni di quelli che pensavo potrebbero essere utili in seguito.
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;
}
}
non deve essere la risposta accettata. La risposta di Mubeen1992 è corretta. – Matthew
@AlanHaverty: l'app di esempio a cui mi collego nella risposta contiene quel codice. Funziona perfettamente bene. L'ho appena testato su un Nexus 9 con Android 7.0 e un Nexus 6P con Android 6.0.1. Ha funzionato perfettamente bene per un paio di anni. Non * li fa in un colpo solo, e sono d'accordo che Rob è una risposta superiore, come ho notato nella mia risposta. Se ritieni di avere prove che questo codice non funziona, pubblica un progetto di esempio da qualche parte. – CommonsWare
@CommonsWare Le mie scuse, mentre testavo con il tuo codice, l'angolo in alto a sinistra della mia mappa sembrava essere impostato con lat lng. Immaginavo che avessi scambiato il significato di .newLatLng(). Non sono sicuro del motivo per cui è stato spento, dev'essere stato qualcos'altro sulla mia fine, i doc dell'API dimostrano il tuo caso, mi dispiace per aver fatto innescare la tua risposta felice! Eliminare il mio primo commento per evitare confusione .. API Origine: https://developers.google.com/android/reference/com/google/android/gms/maps/CameraUpdateFactory.html#newLatLng(com.google.android .gms.maps.model.LatLng) –