2017-05-21 4 views
1

Ich versuche googleMaps zu meinem Projekt zu implementieren, ich habe einfach ein neues Fragment und den folgenden Code hinzugefügt. Zur Zeit kann ich die Karte in meinem Projekt anzeigen, aber Hinzufügen von Markierungen funktioniert nicht und mapFragment.getMapAsync(this) gibt die folgende Fehlermeldung. Die Methode 'getMapAsync(testCodes.project2.MapFragment) kann nicht aufgelöst werden.GoogleMap GetMapAsync funktioniert nicht in Fragment

public class MapFragment extends Fragment implements OnMapReadyCallback { 
    private GoogleMap mMap; 
// private MapView mapView; 
    private Boolean mapReady = false; 
    private GoogleApiClient mGoogleApiClient; 
    private LocationRequest mLocationRequest; 

    public MapFragment() { 
     // Required empty public constructor 
    } 


    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View view = inflater.inflate(R.layout.fragment_map, container, false); 
     // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
     MapFragment mapFragment = (MapFragment) this.getChildFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this);//remember getMap() is deprecated! 


// mapFragment.getMapAsync(this); 
     return view; 
    } 

    @Override 
    public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 
     LatLng sydney = new LatLng(-33.852, 151.211); 

     MarkerOptions markerOptions = new MarkerOptions().position(sydney).title("Random position"); 
     googleMap.addMarker(markerOptions); 
     googleMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 
     checkPermission("Permission", 1, 1); 
     mMap.setMyLocationEnabled(true); 
    } 


} 

Das XML des Fragments.

<fragment 
     android:id="@+id/map" 
     android:layout_width="wrap_content" 
     android:layout_height="match_parent" 
     class="com.google.android.gms.maps.SupportMapFragment"></fragment> 
+0

Sie müssen googleservice.json hinzuzufügen. Ich hoffe, Sie haben hinzugefügt und die erforderlichen Dinge in der Manifest sowie –

+0

Ich habe die erforderliche Sache, wie in der Google SDK, API-Schlüssel usw. Aber nicht sicher, was Sie mit googleservice.json . android: name =" com.google.android.geo.API_KEY "android: value =" myKey "/> – Amar

+0

Versuchen Sie diesen Link. Es wird Ihnen zeigen, wie es geht: http://stackoverflow.com/questions/34367870/where-do-i-get-a-google-services-json –

Antwort

1

In XML-Datei, verwenden Sie class = "com.google.android.gms.maps.SupportMapFragment", so in MapFragment.java Sie SupportMapFragment statt MapFragment verwenden. diese

Wechsel:

MapFragment mapFragment = (MapFragment) this.getChildFragmentManager().findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this);//remember getMap() is deprecated! 

zu:

  SupportMapFragment mapFragment = (SupportMapFragment) this.getChildFragmentManager().findFragmentById(R.id.map); 
     mapFragment.getMapAsync(this);//remember getMap() is deprecated! 
+0

Wenn ich dies versuche, bekomme ich den folgenden Fehler auf der Deklaration : 'Nicht konvertierbare Typen; "android.app.Fragment" kann nicht in "com.google.android.gms.Maps.SupportMapFragment" umgewandelt werden – Amar

+0

versuchen Sie, den Import von android.app.Fragment in android.support.v4.app.Fragment zu ändern –

Verwandte Themen