getMap()方法未定义

时间:2014-01-16 16:56:07

标签: android google-maps android-fragments

我得到“以下代码中的类型”未定义方法getMap()。为什么? 我添加了Google-Play-Services库。

我还在Activity中创建了完全相同的代码而不是片段,然后我没有收到此错误。但是我想在片段中使用它

Karta.java:

package nu.sluggo.testapp.foretagsinfo;

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.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

public class Karta extends Fragment{



    public static Karta newInstance() {
        Karta f = new Karta();
        return f;
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.karta, container, false);
        return v;

    }   

    @Override
    public void onViewCreated(View v, Bundle savedInstanceState){
        super.onViewCreated(v, savedInstanceState);

    final LatLng BUTIKPLATS = new LatLng(57.873873, 11.974995);

    GoogleMap karta;
        karta  = ((Karta) getFragmentManager().findFragmentById(R.id.kontaktVisaFragment)).getMap();

        karta.addMarker(new MarkerOptions().position(BUTIKPLATS).title("Vita Fläckens Blommor"));
        karta.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        CameraUpdate update = CameraUpdateFactory.newLatLngZoom(BUTIKPLATS, 17);
        karta.animateCamera(update);
    }
    }

2 个答案:

答案 0 :(得分:3)

Karta不会extends SupportMapFragmentMapFragment; getMap()仅存在于这些类中(处理Fragments时。您需要让Karta扩展其中一个(取决于您的minSdkVersion)或使用:

GoogleMap karta  = ((`SupportMapFragment` or `MapFragment`) getFragmentManager().findFragmentById(R.id.kontaktVisaFragment)).getMap();

答案 1 :(得分:0)

我宣布为全局变量

    SupportMapFragment mapFragment

然后在我的onCreate()或onCreateView()调用

    mapFragment = ((SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map));

如果在Java实现中使用SupportMapFragment,请确保在XML中使用相同的

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