react native react-native-geocoding地址将不会呈现

时间:2018-08-25 22:53:30

标签: json reactjs react-native google-geocoder

我正在创建一个应用,以使用react native来显示用户添加的内容

在获得用户的许可和纬度之后,我使用expo经度使用react-native-geocoding将软线连接到地址,但是地址无法显示

展览许可代码

 public class Fragment_MatchChats extends Fragment {
private RecyclerView mRecyclerView, mRecyclerViewChat;
private RecyclerView.Adapter mMatchesAdapter, mChatAdapter;
private String currentUserID;
private DatabaseReference mDatabaseChat;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.frag_match_chat, container, false);


currentUserID = FirebaseAuth.getInstance().getCurrentUser().getUid();
mDatabaseChat = FirebaseDatabase.getInstance().getReference().child("Chat");
LinearLayoutManager layoutManager = new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false);
LinearLayoutManager layoutManagerChat = new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false);
mRecyclerView = (RecyclerView) v.findViewById(R.id.recyclerView);
mRecyclerViewChat = (RecyclerView) v.findViewById(R.id.recyclerViewChat);

mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(layoutManager);
mRecyclerViewChat.setHasFixedSize(true);
mRecyclerViewChat.setLayoutManager(layoutManagerChat);

mMatchesAdapter = new MatchesAdapter(getDataSetMatches(), getContext());
mChatAdapter = new RecyclerViewChatAdapter(getmDataSetChat(), getContext());

//This is the method I would like to refresh but it will crash because of parameters issues
getUserMatchId();
return v;
}


//this method will get the user ID in the database that you matched with. It will run through the matches child and get all the user IDs
private void getUserMatchId() {
    DatabaseReference matchDB = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserID).child("swipes").child("matches");
    matchDB.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()){
                for(DataSnapshot match : dataSnapshot.getChildren()){
                    CheckChatID(match.getKey());
                }
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void CheckChatID(final String chat) {
    DatabaseReference ChatDB = FirebaseDatabase.getInstance().getReference().child("Users").child(currentUserID).child("swipes").child("matches")
            .child(chat).child("ChatID");
    ChatDB.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()){
                String ChatID = dataSnapshot.getValue().toString();
                ChatIDExist(ChatID, chat);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void ChatIDExist(final String chatID, final String oppUserID) {
    final DatabaseReference ChatDB = mDatabaseChat.child(chatID);
    ChatDB.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                getLastChatMessages(oppUserID, chatID);
            } else {
                FetchMatchInfo(oppUserID);
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private void getLastChatMessages(final String oppUser, String chatID) {
    final DatabaseReference LastChatDB = mDatabaseChat.child(chatID).child("lastMessage");
    LastChatDB.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                String lastText = "";

                if (dataSnapshot.child("text").getValue() != null){
                    lastText = dataSnapshot.child("text").getValue().toString();
                    FetchChatInfo(oppUser,lastText);
                }

            } else{
                FetchChatInfo(oppUser,"");
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}
private void FetchChatInfo(String key, final String lastText) {
    DatabaseReference userDB = FirebaseDatabase.getInstance().getReference().child("Users").child(key);
    userDB.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if(dataSnapshot.exists()){
                String matched_userID = dataSnapshot.getKey();
                String matches_userName = "";
                String matches_userProPic = "";
                String match_lastText = lastText;

                if(dataSnapshot.child("name").getValue() != null){
                    matches_userName = dataSnapshot.child("name").getValue().toString();
                }
                if(dataSnapshot.child("profilePicURL").getValue() != null){
                    matches_userProPic = dataSnapshot.child("profilePicURL").getValue().toString();
                }

                RecyclerViewChatReference chat_obj = new RecyclerViewChatReference(matched_userID, matches_userName, matches_userProPic, match_lastText);
                mresultsChats.add(chat_obj);
                mRecyclerViewChat.setAdapter(mChatAdapter);
                mChatAdapter.notifyDataSetChanged();

            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

private ArrayList<MatchesReference> resultsMatches = new ArrayList<MatchesReference>();
public ArrayList<RecyclerViewChatReference> mresultsChats = new ArrayList<RecyclerViewChatReference>();

private List<MatchesReference> getDataSetMatches() {
    return resultsMatches;
}
private List<RecyclerViewChatReference> getmDataSetChat() {
    return mresultsChats;
}
}

然后尝试在显示为道具时显示地址

public class ChatActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_chat);

    matchId = getIntent().getExtras().getString("matchID");

    currentUserID = FirebaseAuth.getInstance().getCurrentUser().getUid();

    getChatId();

    mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);
    mRecyclerView.setNestedScrollingEnabled(false);
    mRecyclerView.setHasFixedSize(false);
    mChatLayoutManager = new LinearLayoutManager(ChatActivity.this);
    mRecyclerView.setLayoutManager(mChatLayoutManager);
    mChatAdapter = new ChatAdapter(getDataSetChat(), ChatActivity.this);
    mRecyclerView.setAdapter(mChatAdapter);
    mSendEditText = findViewById(R.id.message);
    mSendButton = findViewById(R.id.send);

    mSendButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            sendMessage();
        }
    });
}
private void sendMessage() {
    String sendMessageText = mSendEditText.getText().toString();

    if(!sendMessageText.isEmpty()){
        DatabaseReference newMessageDb = mDatabaseChat.push();
        DatabaseReference lastMessage = mDatabaseChat.child("lastMessage");

        Map newMessage = new HashMap();
        newMessage.put("createdByUser", currentUserID);
        newMessage.put("text", sendMessageText);

        Map mLastMessage = new HashMap();
        mLastMessage.put("createdByUser", currentUserID);
        mLastMessage.put("text", sendMessageText);

        newMessageDb.setValue(newMessage);
        lastMessage.setValue(mLastMessage);
    }
    mSendEditText.setText(null);
}

private void getChatId(){
    mDatabaseUser.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            if (dataSnapshot.exists()){
                chatId = dataSnapshot.getValue().toString();
                mDatabaseChat = mDatabaseChat.child(chatId);
                getChatMessages();
            }
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });
}

1 个答案:

答案 0 :(得分:0)

react-native-geocoder apihuman readable address-> latitude longitude开始工作。

改为使用google reverse geocoding