java - 向 map 添加标记

标签 java android google-maps

现在我知道如何创建和管理 map 了。而且我可以在我的数据库中找到信息(Retrofit 和 PHP API)。

我想在我的 map 上添加标记。为此,我请求我的数据库并在通过 Retrofit 之后,我检索了一个“标记”对象列表,这些对象目前有两个基本数据:经度和纬度。此列表是在我的 MainActivity 中创建的。

问题是我不知道如何在我管理 map 的类(class)中传递这个列表。 目前,我尝试创建一个传递值表的 Setter。问题是要生成标记,我只能在我的 OnMapReady() 中完成。但现在还为时过早。当我输入 onMapReady() 时,我的列表还没有设置...

基本上我想知道如何在 onMapReady() 之后添加标记?

我的 MainActivity.java:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.e("API_Test", "Message test");

        //BDD
        bddRequest githubService = new RestAdapter.Builder()
                .setEndpoint(bddRequest.ENDPOINT)
                .build()
                .create(bddRequest.class);
        githubService.listMarqueurs("API_REST",new Callback<List<Marqueur>>() {
            @Override
            public void success(List<Marqueur> marqueur, Response response) {
                DisplayRepos(marqueur);

                int i = 0;
                while(i<marqueur.size())`enter code here`
                {
                    Log.e(String.valueOf(i), String.valueOf(marqueur.get(i).getLong()));
                    i++;
                }

                MapsFragment mapInitial = new MapsFragment(marqueur);
            }

            @Override
            public void failure(RetrofitError error) {
                Log.e("API_Test","ERROR ! ");
            }
        });
    }

    public void DisplayRepos(List<Marqueur> marqueur) {
        Log.e("nombre de dépots : ", String.valueOf(+marqueur.size()));
    }
}

我的 MapsFragment.java:

public class MapsFragment extends Fragment implements OnMapReadyCallback
    {
        private List<Marqueur> tousLesMarqueurs;

        public MapsFragment() { }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            //return inflater.inflate(R.layout.fragment_maps, container, false);
            final View rootView = inflater.inflate(R.layout.fragment_maps, container, false);
            final SupportMapFragment mapFragment = (SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
            mapFragment.getMapAsync(this);
            return rootView;
        }

        @Override
        public void onMapReady(GoogleMap googleMap)
        {
            googleMap.addMarker(new MarkerOptions().position(new LatLng(48.8534100, 2.3488000)).title("Paris").snippet("is beautiful !"));

            /*int i = 0;
            while(i<tousLesMarqueurs.size())
            {
                Log.e(String.valueOf(i), String.valueOf(tousLesMarqueurs.get(i).getLong()));
                googleMap.addMarker(new MarkerOptions().position(new LatLng(tousLesMarqueurs.get(i).getLati(), tousLesMarqueurs.get(i).getLong())));
                i++;
            }*/

        }

        @Override
        public void onViewCreated(View view, @Nullable Bundle savedInstanceState)
        {
            super.onViewCreated(view, savedInstanceState);
        }
    }

最佳答案

在您的 MapsFragment 中,创建一个属性 Map myMap。并在 onMapReady() 中设置。 然后在您的二传手中创建标记。

public class MapsFragment extends Fragment implements OnMapReadyCallback
{

    private List<Marqueur> tousLesMarqueurs;
    private GoogleMap myMap;

    ...

    @Override
    public void onMapReady(GoogleMap googleMap)
    {
        myMap = googleMap;

    }

    public void setMarkers( List<Marqueur> markers){
       tousLesMarqueurs = markers;
       int i = 0;
          while(i<tousLesMarqueurs.size())
          {
              myMap.addMarker(new MarkerOptions().position(new LatLng(tousLesMarqueurs.get(i).getLati(), tousLesMarqueurs.get(i).getLong())));
              i++;
          }
    }
}

关于java - 向 map 添加标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48703106/

相关文章:

java - 如何让 PicoContainer 启动/停止/处置工厂注入(inject)的组件?

java - 用于本地高分的 Android 应用程序的 SQLite 数据库。如何打开所有数据然后覆盖所有数据?

android - 如何清除 (RecyclerView) 排序列表?

javascript - 在另一个元素的子元素下方绘制元素

ios - 使用地址字符串/地理编码在 map 上的两个注释引脚之间画线。 - objective-c

java - 如何使用 REST API 更新 ALM 中测试用例的状态

java - 使用 Sockets 在客户端和服务器之间传输 HashMap (JAVA)

java - 删除所有非单词字符,除非 & 或 ' 模式

android - 如何控制Android中默认Alert Dialog的宽度和高度?

google-maps - Google Maps API v3 - 如何检测 map 何时更改为全屏模式?