![](/img/trans.png)
[英]Placing Google Map in a fragment, without using FragmentActivity in Android App
[英]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.