Google地图显示来自firebase的多个标记

时间:2017-12-04 21:11:11

标签: java android google-maps google-maps-api-3 android-studio-3.0

我的代码允许我输入具有纬度和经度的位置名称,然后地图用标记显示位置。

我遇到的问题是我希望地图显示所有位置,每个位置在地图上都有自己的标记。

以下是我用于在地图上显示一个位置的代码

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    googleMap.setOnMarkerClickListener(this);
    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    mVenues.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot s : dataSnapshot.getChildren()){
                Venue venue = s.getValue(Venue.class);
                LatLng location=new LatLng(venue.venueLat,venue.venueLong);
                mMap.addMarker(new MarkerOptions().position(location).title(venue.venueName)).setIcon(BitmapDescriptorFactory.defaultMarker());
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

任何帮助都是非常苛刻的

我没有错误只显示我添加到firebasedatabase的一个位置

1 个答案:

答案 0 :(得分:0)

   Marker marker;
List<Venue> venueList;

//在onCreate方法中   venueList = new ArrayList&lt;&gt;();

    mVenues.push().setValue(marker);

// onMaps ready方法

public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;
    googleMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
    mVenues.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot s : dataSnapshot.getChildren()){
                Venue venue = s.getValue(Venue.class);

                venueList.add(venue);
                for (int i = 0; i < venueList.size(); i++)
                {
                    LatLng latLng = new LatLng(venue.venueLat,venue.venueLong);
                    if (mMap != null) {
                        marker = mMap.addMarker(new MarkerOptions().position(latLng).title(venue.venueName));
                                            }
                }
            }

        }