Я занимаюсь разработкой приложения для 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;
}