Próbuję wyświetlić prostą mapę za pomocą interfejsu Google map API v2 w aplikacji na Androida. Postępuję zgodnie z instrukcjami Map API Documentation. Ale myślę, że onMapReady
nie wywołuje z jakiegoś powodu. Używam google-play-services_lib
wersja 6587000
. Mój telefon ma google-play-services_lib
wersja 6587038
, jak sądzę.onMapReady nie dzwoni, nawet jeśli mapa wyświetla się bezbłędnie
Mapa Google działa z początkowymi kontrolkami. Czy ktoś może mi pomóc skorygować ten błąd?
public class MapDisplay extends FragmentActivity
implements OnMapReadyCallback {
private GoogleMap mMap;
private Location mCurrentLocation;
private MarkerOptions mMarkerOptions ;
private MapFragment mMapFragment;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location_map);
/** not needed
mMapFragment = MapFragment.newInstance();
FragmentTransaction fragmentTransaction =
getFragmentManag
er().beginTransaction();
fragmentTransaction.add(R.id.map, mMapFragment);
fragmentTransaction.commit();*/
/**corrected code*/
MapFragment mapFragment = (MapFragment) getFragmentManager()
.findFragmentById(R.id.map);
mapFragment.getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap map) {
toast("Map ready");
Log.d("--***** MAP ","::Map ready");
LatLng sydney = new LatLng(-33.867, 151.206);
map.setMyLocationEnabled(true);
map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));
map.addMarker(new MarkerOptions()
.title("Sydney")
.snippet("The most populous city in Australia.")
.position(sydney));
}
private void toast(String text){
Toast toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
toast.show();
}
}
plik location_map.xml
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
Dodane getMapAsync(). teraz onMapReady działa. – SAN
@SAN: "getMapAsync() throw and error" - wtedy być może powinieneś rozważyć zadanie pytania o przepełnienie stosu, aby uzyskać pomoc w przypadku jakiegokolwiek problemu. "więc musiałem użyć" - tak? AFAIK, nadal musisz wywołać 'getMapAsync()'. Co więcej, teraz masz * dwie * instancje 'MapFragment'. Oto przykładowy projekt demonstrujący użycie 'getMapAsync()' ze statycznym 'MapFragment': https://github.com/commonsguy/cw-omnibus/tree/master/MapsV2/NooYawk – CommonsWare
To będzie pomocne dla someOne jeśli w xml pojawi się
Nepster