【发布时间】:2016-09-20 04:59:52
【问题描述】:
【问题讨论】:
【问题讨论】:
您需要在您的 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();
}
}
【讨论】:
第 1 步: 在您的主要活动中添加 Mapview。
第 2 步: 在 MapView 上添加 OnClickListener
mMapView.getMap().setOnMapClickListener(new OnMapClickListener()
{
@Override
public void onMapClick(LatLng arg0)
{
//Open New Activity
}
});
第 3 步: 打开 New Activity 以显示您的地图。
希望您会发现此答案有用。 快乐的编码
【讨论】: