#android #firebase #google-maps #firebase-realtime-database
#Android #firebase #google-карты #firebase-realtime-database
Вопрос:
Я разрабатываю приложение на Android Studio, которое позволяет пользователям рекомендовать рестораны и достопримечательности, которые им нравятся. Они отправили бы его через страницу отправки в моей точке доступа. Я бы хотел, чтобы он сохранял их отправку в 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;
}
Комментарии:
1. И что не так с этим кодом?
2. Этот код определяет местоположение пользователя и размещает пользовательский маркер на карте. Я хочу код, который позволяет клиенту вводить свои собственные данные, назначать эту информацию firebase, а затем заполнять карту