Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.robertoc.meublogclash;
- import android.content.pm.PackageManager;
- import android.support.v4.app.ActivityCompat;
- import android.support.v4.app.FragmentActivity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.TextView;
- import com.google.android.gms.maps.UiSettings;
- import com.google.firebase.auth.FirebaseUser;
- import com.google.firebase.database.ChildEventListener;
- import com.firebase.client.Firebase;
- import com.google.firebase.database.ValueEventListener;
- import com.google.android.gms.maps.CameraUpdateFactory;
- import com.google.android.gms.maps.GoogleMap;
- import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
- import com.google.android.gms.maps.OnMapReadyCallback;
- import com.google.android.gms.maps.SupportMapFragment;
- import com.google.android.gms.maps.model.LatLng;
- import com.google.android.gms.maps.model.Marker;
- import com.google.android.gms.maps.model.MarkerOptions;
- import com.google.firebase.auth.FirebaseAuth;
- import com.google.firebase.database.DatabaseError;
- import com.google.firebase.database.DatabaseReference;
- import com.google.firebase.database.FirebaseDatabase;
- import com.squareup.picasso.Picasso;
- import org.apache.commons.collections4.BidiMap;
- import org.apache.commons.collections4.bidimap.DualHashBidiMap;
- import de.hdodenhof.circleimageview.CircleImageView;
- public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMapLongClickListener, GoogleMap.OnInfoWindowClickListener {
- private DatabaseReference mDatabase;
- private DatabaseReference mDatabase1;
- private DatabaseReference mDatabase2;
- private FirebaseAuth mAuth;
- private GoogleMap mMap;
- Firebase ref;
- private FirebaseUser mCurrentUser;
- private BidiMap<String, Marker> userMarkers;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_maps);
- Firebase.setAndroidContext(this);
- mAuth = FirebaseAuth.getInstance();
- mDatabase = FirebaseDatabase.getInstance().getReference();
- mDatabase1 = FirebaseDatabase.getInstance().getReference().child("locations");
- mDatabase2 = FirebaseDatabase.getInstance().getReference().child("users");
- mCurrentUser = mAuth.getCurrentUser();
- userMarkers = new DualHashBidiMap<>();
- SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
- .findFragmentById(R.id.map);
- mapFragment.getMapAsync(this);
- }
- @Override
- public void onMapReady(GoogleMap googleMap) {
- mMap = googleMap;
- // Add a marker in Sydney and move the camera
- LatLng brazil = new LatLng(-18, -48);
- mMap.setInfoWindowAdapter(new UserAdapter());
- mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(brazil, 4));
- if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
- // TODO: Consider calling
- // ActivityCompat#requestPermissions
- // here to request the missing permissions, and then overriding
- // public void onRequestPermissionsResult(int requestCode, String[] permissions,
- // int[] grantResults)
- // to handle the case where the user grants the permission. See the documentation
- // for ActivityCompat#requestPermissions for more details.
- return;
- }
- mMap.setMyLocationEnabled(true);
- mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
- mMap.setOnMapLongClickListener(this);
- UiSettings uiSettings = googleMap.getUiSettings();
- uiSettings.setCompassEnabled(true);
- uiSettings.setZoomControlsEnabled(true);
- final String user_id = mAuth.getCurrentUser().getUid();
- mDatabase1.addChildEventListener(new ChildEventListener() {
- @Override
- public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
- Location childLocation = dataSnapshot.getValue(Location.class);
- LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
- MarkerOptions markerOptions =new MarkerOptions().position(childPos);
- Marker marker = mMap.addMarker(markerOptions);
- userMarkers.put(dataSnapshot.getKey(),marker);
- }
- @Override
- public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
- Location childLocation = dataSnapshot.getValue(Location.class);
- Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
- oldMarker.remove();
- LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
- MarkerOptions markerOptions =new MarkerOptions().position(childPos);
- Marker marker = mMap.addMarker(markerOptions);
- userMarkers.put(dataSnapshot.getKey(),marker);
- mDatabase1.child(user_id).child("uid").setValue(mCurrentUser.getUid());;
- }
- @Override
- public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {
- Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
- oldMarker.remove();
- userMarkers.remove(dataSnapshot.getKey());
- }
- @Override
- public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }});}
- @Override
- public void onMapLongClick(LatLng latLng) {
- Location location=new Location(latLng.latitude,latLng.longitude);
- sendMark(location);
- }
- private void sendMark(Location location){
- String userName= FirebaseAuth.getInstance().getCurrentUser().getUid();
- mDatabase1.child(userName).setValue(location);
- }
- @Override
- public void onInfoWindowClick(Marker marker) {
- marker.hideInfoWindow();
- marker.showInfoWindow();
- }
- private class UserAdapter implements GoogleMap.InfoWindowAdapter{
- private View view;
- public UserAdapter(){
- this.name = name;
- this.trofeus = trofeus;
- this.whatsap = whatsap;
- this.patente = patente;
- this.nameclan = nameclan;
- this.nameConta = nameConta;
- this.profile = profile;
- view=getLayoutInflater().inflate(R.layout.user_info,null);
- }
- TextView name;
- TextView trofeus;
- TextView whatsap;
- TextView patente;
- TextView nameclan;
- TextView nameConta;
- CircleImageView profile;
- @Override
- public View getInfoWindow(Marker marker) {
- final TextView name = (TextView) view.findViewById(R.id.userName);
- final TextView trofeus = (TextView) view.findViewById(R.id.userTrofeus);
- final TextView whatsap = (TextView) view.findViewById(R.id.userWhatsap);
- //patente = (TextView) view.findViewById(R.id.userPatente);
- final TextView nameclan = (TextView) view.findViewById(R.id.userNameClan);
- final TextView nameConta = (TextView) view.findViewById(R.id.userNameConta);
- final CircleImageView profile = (CircleImageView) view.findViewById(R.id.userAvatar);
- String userId = userMarkers.getKey(marker);
- mDatabase.child("Users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
- @Override
- public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
- User user = dataSnapshot.getValue(User.class);
- name.setText(user.getName());
- trofeus.setText(user.getTrofs()+"");
- whatsap.setText(user.getWhatsap()+"");
- nameConta.setText(user.getNameConta());
- //patente.setText(user.getPatente());
- nameclan.setText(user.getNameClan()+"-"+user.getPatente());
- Picasso.with(MapsActivity.this).load(user.getProfile()).into(profile);
- }
- @Override
- public void onCancelled(DatabaseError databaseError) {
- }
- });
- return view;
- }
- @Override
- public View getInfoContents(Marker marker) {
- return null;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement