Laden Android-Google Map-fragment verwaltet von ViewPager
Kann ich laden Sie eine google-Karte in ein Android-fragment, das innerhalb einer Aktivität. Das hat gut funktioniert.
Aber jetzt will ich mit ViewPager zum navigieren zwischen Ansichten (Klasse android.support.v4.app.Fragment
). Es scheint nicht möglich zu laden com.google.android.gms.maps.MapFragment
in solchen fragment.
Beispielsweise in:
SoleMap.java
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.OnMapReadyCallback;
import com.google.android.gms.maps.model.LatLng;
public class SoleMap extends Fragment implements OnMapReadyCallback {
MapFragment gMapFragment;
GoogleMap gMap = null;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.sole_map, container, false);
gMapFragment = (MapFragment) getFragmentManager().findFragmentById(R.id.soleViewMap);
gMapFragment.getMapAsync(this);
return view;
}
@Override
public void onMapReady(GoogleMap map) {
gMap = map;
gMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
gMap.moveCamera(CameraUpdateFactory.newLatLngZoom(new
LatLng(49.39,-124.83), 20));
}
}
Die Aussage
getFragmentManager().findFragmentById(R.id.holeViewMap);
verursacht einen compiler-Fehler (unverträgliche Typen).
Habe ich versucht, SupportMapFragment statt, die eliminiert der compiler-Fehler, aber dann wenn ich die app starte, es bricht sofort mit der Meldung "I/O Error: Connection refused". Die Google docs scheinen zu zeigen, dass Sie eine spezielle "Für die Arbeit" - Konto verwenden Sie die Support library. Ist das richtig? Wenn dem so ist, ich denke, ich bin das Glück.
Die einzige weitere Weise kann ich sehen, es zu tun, ist die Verwendung von Aktivitäten anstelle von Fragmenten, die als host für meine Ansichten, D. H., loszuwerden, die ViewPager.
Irgendwelche Vorschläge?
- versuchen Sie dies: stackoverflow.com/questions/19353255/...
- Connection refused: haben Sie Google Maps API-key im manifest?
- Ich denke, dass meine "connection refused" problem wurde nicht verwandten-wahrscheinlich mit einem update für die SDK, benötigt ein shutdown/Neustart. Um Ihre Frage zu beantworten, ja, ich hatte mein manifest (mit Schlüssel) gearbeitet hatte zuvor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Ihrem
sole_map.xml
Sie müssen eine MapView, sagen wir so etwas wie dieses:Dann bekommen Sie von Ihrem SoleMap fragment mit der id
view.findViewById(R.id.soleViewMap);
Dies wird eine MapView, dann können Sie tun, was Sie jetzt tun. Es sollte in etwa so Aussehen:Vergessen Sie nicht zuordnen, Ihre mapview mit der fragment-Lebenszyklus aufrufen der Ereignisse
onCreate
,onLowMemory
,onPause
,onResume
undonDestroy
(hoffe nicht fehlen alle von Ihnen), und rufen SieMapsInitializer.initialize(getContext());
sowieMapView
und nichtSupportMapFragment
?gMapView.getMapAsync(this);
in meinem Projekt.Akzeptierte Antwort ist guter Ausgangspunkt, aber wenn wir versuchen, es zu verwenden, schlagen fehl, es beschreibt nicht die vollständige Lösung. Voll funktionsfähige fragment mit der Karte, die verwendet werden können, in
ViewPager
undTabs
( beachten Sie die Verwendung der Karte in fragmeny lifecycle ):Benutzerdefinierte
MapView
Klasse - es ist notwendig, wenn wirScrollView
als Eltern, Sie geben die Möglichkeit, sich zu bewegen gekennzeichnet.Wenn Sie nicht mitScrollView
in diesem Bildschirm wird dann der standardMapView
verwendet werden kann.Letzte Punkt ist die layout -
R.layout.fragment_map
:Schreiben Sie diesen code in Ihre
activity_maps.xml