Adding Google Maps to a RecyclerView

后端 未结 3 1470
失恋的感觉
失恋的感觉 2020-12-30 16:35

I have added the map view inside the RecyclerView alongside other types of list items but now ... how and where do I initialize the map, where do I listen for o

相关标签:
3条回答
  • 2020-12-30 17:16

    For example you can use Glide and load map preview, not map fragment Like this:

        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);
    

    Or using lib - static-maps-api

    0 讨论(0)
  • 2020-12-30 17:32

    There are tow possibliy do this thing,
    one is Google Static Maps API using, which will give you the snapshot of the map

    Another is, you can use com.google.android.gms.maps.MapView inside of recycler item and initialize in your viewholder like bellow,

    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 讨论(0)
  • 2020-12-30 17:40

    there is something called lite mode in google map you can use in recycler view

    check this litemode

    and sample code example LiteListDemoActivity

    0 讨论(0)
提交回复
热议问题