使用地图片段活动

时间:2016-03-24 17:20:10

标签: java android fragment

我正在尝试使用Google地图片段创建基本活动。现在我有这个:

public class MainScreen extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_screen);

        // add the map fragment to the activity
        if (findViewById(R.id.fragment_container) != null) {
             if (savedInstanceState != null) { return; }
             getSupportFragmentManager().beginTransaction()
             .add(R.id.fragment_container, new FragmentGoogle()).commit();
        }
    }
}
public class FragmentGoogle extends android.support.v4.app.Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.map_google, container, false);
    }
}

产生这个:

enter image description here

我的问题是:我如何与片段本身进行交互?让我们想要放大西德尼。我应该将代码放在MainScreen.class或Fragment.class中吗?我应该使用哪种方法?这是我第一次使用片段。

1 个答案:

答案 0 :(得分:1)

您无需创建自己的FragmentGoogle。您可以使用com.google.android.gms.maps.SupportMapFragment并从您的活动代码中控制它。

在布局中:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/map"
    tools:context=".MapsActivity"
    android:name="com.google.android.gms.maps.SupportMapFragment" />

然后在活动代码中:

public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

    private GoogleMap mMap;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_maps);
        SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                .findFragmentById(R.id.map);
        mapFragment.getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        mMap = googleMap;

        // Add a marker in Sydney, Australia, and move the camera.
        LatLng sydney = new LatLng(-34, 151);
        mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
    }
}

代码取自 this tutorial足以启动和使用Google Maps Android API的大部分功能,只需按照以下步骤操作:)