【问题标题】:Mapview in separate fragment androidMapview在单独的片段android
【发布时间】:2016-09-20 04:59:52
【问题描述】:

假设我的主要活动是这样的,我想要这样的地图视图
这里我的主要活动在主要活动中保存了mapview的实例,然后当我点击它时,应该使用android中的地图活动打开一个新活动

【问题讨论】:

    标签: android android-mapview


    【解决方案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();
    }
    
    }
    

    【讨论】:

      【解决方案2】:

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

      第 2 步: 在 MapView 上添加 OnClickListener

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

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

      希望您会发现此答案有用。 快乐的编码

      【讨论】:

        猜你喜欢
        • 2014-11-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多