首页 > 解决方案 > 在 onMapReady 内部,Picasso 不会第一次加载图像,而是在重新创建活动后加载图像

问题描述

Picasso 在应用程序中使用,它工作正常,除非我在 onMapReady 中使用它来加载标记图像并且第一次不工作。这是我的代码:

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


    mMap.getUiSettings().setZoomControlsEnabled(true);
    mMap.getUiSettings().setMyLocationButtonEnabled(true);

    // Add a marker and move the camera
    mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(Double.parseDouble(sharedPreferences.getString("CurntLatitude","24.74")),Double.parseDouble(sharedPreferences.getString("CurntLongitude","46.61"))),14));
    get_seller_user();




} 

public Marker createMarker(int layout, double latitude, double longitude, String profile_img, boolean delivery_sevices, boolean events_services, String id) {

    View marker = ((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(layout, null);

     markerImage =  marker.findViewById(R.id.user_dp);
    ImageView online_status =  marker.findViewById(R.id.online_status);
    ImageView events =  marker.findViewById(R.id.for_group_img);
    ImageView delivery =  marker.findViewById(R.id.can_deliver_img);

    if(events_services){
    events.setVisibility(View.VISIBLE);}
    if(delivery_sevices){
    delivery.setVisibility(View.VISIBLE);}


    //picaso for loade image
    Picasso.with(getActivity()).load(profile_img).into(markerImage);





    DisplayMetrics displayMetrics = new DisplayMetrics();
    getActivity().getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);



    marker.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
    marker.measure(displayMetrics.widthPixels, displayMetrics.heightPixels);
    marker.layout(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
    marker.buildDrawingCache();
    Bitmap bitmap = Bitmap.createBitmap(marker.getMeasuredWidth(), marker.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(bitmap);
    marker.draw(canvas);



    return mMap.addMarker(new MarkerOptions()
            .position(new LatLng(latitude,longitude)).icon(BitmapDescriptorFactory.fromBitmap(bitmap)).title(id));


}




public  void get_seller_user() {

    Query Query = database.orderByChild("acount_type").equalTo("seller");
    Query.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            Users users;
            for (DataSnapshot Snapshot: dataSnapshot.getChildren()) {
                 users = Snapshot.getValue(Users.class);
                 createMarker(R.layout.custom_marker,Double.parseDouble(users.getLatitude()),Double.parseDouble(users.getLongitude()),users.getProfile_img(),users.isDelivery_sevices(),users.isEvents_services(),users.getUser_id());
            }

        }
            @Override
        public void onCancelled(DatabaseError databaseError) {
            Log.e(TAG, "onCancelled", databaseError.toException());

        }

    });

}

标签: androidfirebasegoogle-maps

解决方案


推荐阅读