带有 fragment 内标记的Android谷歌地图

标签 android google-maps fragment

我想在 fragment 中显示谷歌地图。世界地图已显示,但标记将被忽略。 希望有些人可以帮助我解决我的问题。 请在下面找到我的代码:

MapsFragment.java:

import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;


public class MapsFragment extends SupportMapFragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
    {
        super.onCreateView(inflater, container, savedInstanceState);
        View root = inflater.inflate(R.layout.fragment_map, null, false);
        initilizeMap();
        return root;
    }

    private void initilizeMap()
    {
        SupportMapFragment mSupportMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
        if (mSupportMapFragment == null) {
            FragmentManager fragmentManager = getFragmentManager();
            FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
            mSupportMapFragment = SupportMapFragment.newInstance();
            fragmentTransaction.replace(R.id.map, mSupportMapFragment).commit();
        }
        if (mSupportMapFragment != null)
        {
            GoogleMap googleMap = mSupportMapFragment.getMap();
            if (googleMap != null)
                googleMap.addMarker(new MarkerOptions().position(new LatLng(10.1253,10.5868)));
        }
    }
}

fragment_map.xml(布局):

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:orientation="vertical" >
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1.03"
        android:name="com.google.android.gms.maps.SupportMapFragment"
        android:id="@+id/map" />
</LinearLayout>

设置APIKey和权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

谢谢!

最佳答案

不要使用 getMap() 方法,它已被弃用。您应该使用 getMapAsync()。查看this link .您的 mapsFragments 需要实现 OnMapReadyCallback界面。

关于带有 fragment 内标记的Android谷歌地图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34976508/

相关文章:

java - 使用自定义 ArrayAdapter 时获取 ClassCastException

android - fragment - getActivity() 如何在 onAttach 之后返回 null

android - 如何从 Android Gingerbread 中的 libmedia_jni 访问自己的 libmediaplayerservice 库

ios - 是否可以将 google places 限制为餐厅或咖啡店等一两个地方?

android - 替换谷歌地图以打开街道 map

android - 在不重新加载 map 的情况下移动标记

android - 应用程序因配置更改而崩溃

android - 屏幕锁定和解锁

android - 导入openCV总是显示错误

java - 管理单个 Clicklistener 的 Libgdx 问题