Добавление Google Maps в RecyclerView - PullRequest
0 голосов
/ 06 июля 2018

Я добавил вид карты внутри RecyclerView вместе с другими типами элементов списка, но теперь ... как и где я инициализирую карту, где я слушаю onMapReady, чтобы впоследствии я мог разместить маркер, и как мне справиться с утилизацией предмета?

Есть какие-нибудь идеи, как лучше всего поступать в этой ситуации?

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Есть возможность сделать это,
один Google Static Maps API использует, что даст вам снимок карты

Другое, вы можете использовать com.google.android.gms.maps.MapView внутри предмета утилизатора и инициализировать в вашем viewholder, как показано ниже,

public class AdapterWithMap extends RecyclerView.Adapter<AdapterWithMap.CustomeHolder> {

        @Override
        public void onBindViewHolder(CustomeHolder holder, int position)
        {
            GoogleMap thisMap = holder.mapCurrent;
            if(thisMap != null)
                thisMap.moveCamera();//initialize your position with lat long  or move camera
        }
        @Override
        public void onViewRecycled(CustomeHolder holder)
        {
            // Cleanup MapView here?
            if (holder.mapCurrent != null)
            {
                holder.mapCurrent.clear();
                holder.mapCurrent.setMapType(GoogleMap.MAP_TYPE_NONE);
            }
        }
        public class CustomeHolder extends RecyclerView.ViewHolder implements OnMapReadyCallback {
            GoogleMap mapCurrent;
            MapView map;

            public CustomeHolder(View view) {
                super(view);
                map = (MapView) view.findViewById(R.id.mapImageView);
                if (map != null)
                {
                    map.onCreate(null);
                    map.onResume();
                    map.getMapAsync(this);
                }

            }

            @Override
            public void onMapReady(GoogleMap googleMap) {
                MapsInitializer.initialize(getApplicationContext());
                mapCurrent = googleMap;
            }

        }
    }
0 голосов
/ 29 ноября 2018

на карте Google есть что-то, что называется облегченным режимом, которое вы можете использовать в представлении переработчика

отметьте это litemode

и пример кода LiteListDemoActivity

0 голосов
/ 06 июля 2018

Например, вы можете использовать Glide и загрузить предварительный просмотр карты, а не фрагмент карты Как это:

    GlideApp
        .with(context)
        .load("http://maps.google.com/maps/api/staticmap?center=" + 
               lat + 
               "," + 
               lng + 
               "&zoom=15&size=200x200&sensor=false" +
               "&markers=color:red%7Clabel:C%" + 
               markerLat + 
               "," + 
               markerLlng)
        .centerCrop()
        .into(myImageView);

Или используя lib - static-maps-api

...