Как разрешить пользователям добавлять пользовательские маркеры на пустую карту с помощью API карт Google и базы Fire - PullRequest
0 голосов
/ 22 апреля 2019

Я занимаюсь разработкой приложения для Android Studio, которое позволяет пользователям рекомендовать рестораны и достопримечательности, которые им нравятся.Они будут отправлять его через страницу представления на мой AP.Я хотел бы, чтобы они хранили их отправку в fire-base, а затем заполняли пустую карту маркером клиента и подробностями.

Я нашел учебное пособие по добавлению пользовательских маркеров на карту, используя местоположение пользователя, которое использует firebase, новсе это делается в коде, и я не уверен, что будет лучше настроить этот код в соответствии с моими потребностями, чем при использовании другого метода.

Ниже приведен код, используемый в руководстве.

public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {

 View view = inflater.inflate(R.layout.fragment_user_list, container, false);
    mUserListRecyclerView = view.findViewById(R.id.user_list_recycler_view);
    mMapView = view.findViewById(R.id.user_list_map);

    initUserListRecyclerView();
    initGoogleMap(savedInstanceState);

    setUserPosition();

    return view;
}


private void addMapMarkers(){

    if(mGoogleMap != null){

        if(mClusterManager == null){
            mClusterManager = new ClusterManager<ClusterMarker>(getActivity().getApplicationContext(), mGoogleMap);
        }
        if(mClusterManagerRenderer == null){
            mClusterManagerRenderer = new MyClusterMarkerManagerRenderer(
                    getActivity(),
                    mGoogleMap,
                    mClusterManager
            );
            mClusterManager.setRenderer(mClusterManagerRenderer);
        }

        for(UserLocation userLocation: mUserLocations){

            Log.d(TAG, "addMapMarkers: location: " + userLocation.getGeo_point().toString());
            try{
                String snippet = "";
                if(userLocation.getUser().getUser_id().equals(FirebaseAuth.getInstance().getUid())){
                    snippet = "This is you";
                }
                else{
                    snippet = "Determine route to " + userLocation.getUser().getUsername() + "?";
                }

                int avatar = R.drawable.cartman_cop; // set the default avatar
                try{
                    avatar = Integer.parseInt(userLocation.getUser().getAvatar());
                }catch (NumberFormatException e){
                    Log.d(TAG, "addMapMarkers: no avatar for " + userLocation.getUser().getUsername() + ", setting default.");
                }
                ClusterMarker newClusterMarker = new ClusterMarker(
                        new LatLng(userLocation.getGeo_point().getLatitude(), userLocation.getGeo_point().getLongitude()),
                        userLocation.getUser().getUsername(),
                        snippet,
                        avatar,
                        userLocation.getUser()
                );
                mClusterManager.addItem(newClusterMarker);
                mClusterMarkers.add(newClusterMarker);

            }catch (NullPointerException e){
                Log.e(TAG, "addMapMarkers: NullPointerException: " + e.getMessage() );
            }

        }
        mClusterManager.cluster();

        setCameraView();
    }
}
private void setCameraView() {

    // Set a boundary to start
    double bottomBoundary = mUserPosition.getGeo_point().getLatitude() - .1;
    double leftBoundary = mUserPosition.getGeo_point().getLongitude() - .1;
    double topBoundary = mUserPosition.getGeo_point().getLatitude() + .1;
    double rightBoundary = mUserPosition.getGeo_point().getLongitude() + .1;

    mMapBoundary = new LatLngBounds(
            new LatLng(bottomBoundary, leftBoundary),
            new LatLng(topBoundary, rightBoundary)
    );

    mGoogleMap.moveCamera(CameraUpdateFactory.newLatLngBounds(mMapBoundary, 0));}

private void setUserPosition() {

    for (UserLocation userLocation : mUserLocations) {
        if (userLocation.getUser().getUser_id().equals(FirebaseAuth.getInstance().getUid())) {
            mUserPosition = userLocation;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...