簡體   English   中英

沒有布局Android的Google Map片段的基本方法Java

[英]Base methods Java for a Google Map fragment without a layout Android

我是Android的新手,我很頭疼。 首先,我為我的應用程序創建了所有布局,現在我開始制作方法。

遵循Google Guideline Hello Map之后 ,問題在於此方法是一種具有您自己的布局的活動,但是我正在使用的片段保存了地圖,事實並非如此。

當我不對XML片段使用“類”時,它將顯示地圖。 但是當我嘗試使用此方法Hello Map時 ,它什么也沒有顯示。

這是包含片段的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showIn="@layout/app_bar_menu"
tools:context=".MenuActivity">


<AutoCompleteTextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/autoCompleteTextView_map"
    android:layout_alignParentTop="true"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:hint="Digite o Local"
    />

<fragment
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:id="@+id/map"
    android:layout_below="@+id/autoCompleteTextView_map"
    android:layout_alignParentLeft="true"
    android:layout_alignParentStart="true"
    android:layout_alignRight="@+id/autoCompleteTextView_map"
    android:layout_alignEnd="@+id/autoCompleteTextView_map"
    android:layout_alignParentBottom="true"
    class="com.example.RF.MyApp.MapFragment" />
 </RelativeLayout>

這是我試圖使用的Java代碼,這很不好哈哈

public class MapFragment extends Fragment {

 View myView;
public MapFragment(){

    // Required empty public constructor
}

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    RelativeLayout relativeLayout = new RelativeLayout(getActivity());
    myView=relativeLayout;


    return myView;
}


public void onMapReady(GoogleMap map) {
    LatLng sydney = new LatLng(-33.867, 151.206);

    map.setMyLocationEnabled(true);
    map.moveCamera(CameraUpdateFactory.newLatLngZoom(sydney, 13));

    map.addMarker(new MarkerOptions()
            .title("Sydney")
            .snippet("The most populous city in Australia.")
            .position(sydney));
}
}

如果有人有解決方案,請幫助我。 謝謝! ;)

我的項目代碼

    MainActivity extends Activity
    {

   OnCreateBundle()
  {
    CheckGoogleMap();
  }

    }
         private void CheckGoogleMap()
            {

                try {
                    if (googleMap == null) {
                        googleMap = ((MapFragment) getFragmentManager().
                                findFragmentById(R.id.map)).getMap();

                    }

                    UiSettings uiSettings = googleMap.getUiSettings();
                    uiSettings.setCompassEnabled(false);
                    uiSettings.setZoomControlsEnabled(true);
                    uiSettings.setMyLocationButtonEnabled(false);


                }
                catch (Exception e) {
                    e.printStackTrace();
                }

            }

從XMl中刪除類引用。

我將使用FrameLayout並在Activity代碼中動態添加Fragment,而不是使用靜態Fragment。

至於創建不需要布局xml的Map Fragment類,只需將Fragment擴展為SupportMapFragment。

這是一個簡單的示例:

public class MyMapFragment extends SupportMapFragment 
                       implements OnMapReadyCallback {

    private GoogleMap mMap;
    private Marker marker;


    public MyMapFragment () {
    }

    @Override
    public void onResume() {
        super.onResume();
        setUpMapIfNeeded();
    }

    private void setUpMapIfNeeded() {

        if (mMap == null) {
            getMapAsync(this);
        }
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {

        mMap = googleMap;
        setUpMap();
    }

    private void setUpMap() {

        mMap.setMyLocationEnabled(true);
        mMap.setMapType(GoogleMap.MAP_TYPE_HYBRID);
        mMap.getUiSettings().setMapToolbarEnabled(false);

        mMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {

            @Override
            public void onMapClick(LatLng point) {

                //remove previously placed Marker
                if (marker != null) {
                    marker.remove();
                }

                //place marker where user just clicked
                marker = mMap.addMarker(new MarkerOptions().position(point).title("Marker")
                        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_MAGENTA)));

            }
        });

    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM