Mapview在单独的片段android中

时间:2016-09-20 04:59:53

标签: android android-mapview

我希望有一个像这样的mapview,假设我的主要活动是这样的 http://i.stack.imgur.com/dzADf.jpg
这里我的主要活动在主要活动中保存了mapview的实例,然后当我点击它时,应该用android中的地图活动打开一个新的活动

2 个答案:

答案 0 :(得分:1)

第1步: 在您的主要活动上添加Mapview。

第2步: 在MapView上添加OnClickListener

mMapView.getMap().setOnMapClickListener(new OnMapClickListener()
                {
                    @Override
                    public void onMapClick(LatLng arg0)
                    {
                        //Open New Activity
                    }
                });

第3步: 打开New Activiy以显示您的地图。

希望你会发现这个答案很有用。 快乐的结合

答案 1 :(得分:1)

您需要在xml文件中包含supportMapFragment,并将mapFragment引用到MainFragment中。下面的代码解释了如何在Fragment中完成MapView。在mapView.xml中编写以下XML代码,然后使用Fragment OnCreateView获取引用。

<fragment xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainMap" android:name="com.google.android.gms.maps.SupportMapFragment" android:layout_width="match_parent" android:layout_height="200dp" />

public class MapInFragment extends Fragment implements OnMapReadyCallback {
private View rootView;
private GoogleMap mMap;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    rootView = inflater.inflate(R.layout.mapView, container, false);





    try{
        SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.mainMap);
        mapFragment.getMapAsync(MapInFragment.this);
    }catch (Exception e){
        e.printStackTrace();
    }

    return rootView;
}


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

        // Add a marker in Sydney and move the camera
        LatLng croplatlng = new LatLng(Double.parseDouble(latitude), Double.parseDouble(longitude));
        mMap.addMarker(new MarkerOptions().position(croplatlng).title(crop + "Field"));

        //mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(croplatlng,16));

        CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(croplatlng , 16);
        //mMap.addMarker(new MarkerOptions().position(location).title(""));
        //mMap.moveCamera(CameraUpdateFactory.newLatLng(currentLocation ));
        mMap.animateCamera(cameraUpdate,2000,null);
    }catch (Exception e){
        e.printStackTrace();
    }

}


public void onDestroyView()
{
    try {
        Fragment fragment = (getChildFragmentManager().findFragmentById(R.id.mainMap));
        if (fragment != null) {
            FragmentTransaction ft = getActivity().getSupportFragmentManager().beginTransaction();
            ft.remove(fragment);
            ft.commit();
        }
    }catch (Exception e){
        e.printStackTrace();
    }
    super.onDestroyView();
}

}