Advertisement
WallaceRobertoc

Untitled

Jan 29th, 2017
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.43 KB | None | 0 0
  1. package com.robertoc.meublogclash;
  2.  
  3. import android.provider.ContactsContract;
  4. import android.support.v4.app.FragmentActivity;
  5. import android.os.Bundle;
  6. import android.util.Log;
  7. import android.view.View;
  8. import android.widget.ImageView;
  9. import android.widget.TextView;
  10. import android.widget.Toast;
  11.  
  12. import com.google.firebase.database.ChildEventListener;
  13. import com.firebase.client.DataSnapshot;
  14. import com.firebase.client.Firebase;
  15. import com.firebase.client.FirebaseError;
  16. import com.google.firebase.database.ValueEventListener;
  17. import com.google.android.gms.maps.CameraUpdateFactory;
  18. import com.google.android.gms.maps.GoogleMap;
  19. import com.google.android.gms.maps.GoogleMap.OnMapLongClickListener;
  20. import com.google.android.gms.maps.GoogleMap.OnMapClickListener;
  21. import com.google.android.gms.maps.MapFragment;
  22. import com.google.android.gms.maps.OnMapReadyCallback;
  23. import com.google.android.gms.maps.SupportMapFragment;
  24. import com.google.android.gms.maps.model.LatLng;
  25. import com.google.android.gms.maps.model.LatLngBounds;
  26. import com.google.android.gms.maps.model.Marker;
  27. import com.google.android.gms.maps.model.MarkerOptions;
  28. import com.google.firebase.auth.FirebaseAuth;
  29. import com.google.firebase.database.DatabaseError;
  30. import com.google.firebase.database.DatabaseReference;
  31. import com.google.firebase.database.FirebaseDatabase;
  32. import com.google.firebase.database.Query;
  33. import com.squareup.picasso.Picasso;
  34.  
  35. import org.apache.commons.collections4.BidiMap;
  36. import org.apache.commons.collections4.bidimap.DualHashBidiMap;
  37.  
  38. import java.util.HashMap;
  39. import java.util.Map;
  40.  
  41.  
  42.  
  43. public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMapLongClickListener{
  44. private DatabaseReference mDatabase;
  45. private DatabaseReference mDatabase1;
  46. private DatabaseReference mDatabase2;
  47. private GoogleMap mMap;
  48. Firebase ref;
  49.  
  50. private BidiMap<String,Marker> userMarkers;
  51. @Override
  52. protected void onCreate(Bundle savedInstanceState) {
  53. super.onCreate(savedInstanceState);
  54. setContentView(R.layout.activity_maps);
  55. Firebase.setAndroidContext(this);
  56.  
  57.  
  58. mDatabase = FirebaseDatabase.getInstance().getReference();
  59. mDatabase1 = FirebaseDatabase.getInstance().getReference().child("locations");
  60. mDatabase2 = FirebaseDatabase.getInstance().getReference().child("users");
  61.  
  62. userMarkers=new DualHashBidiMap<>();
  63.  
  64. SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
  65. .findFragmentById(R.id.map);
  66. mapFragment.getMapAsync(this);
  67.  
  68. }
  69.  
  70.  
  71. @Override
  72. public void onMapReady(GoogleMap googleMap) {
  73. mMap = googleMap;
  74.  
  75. // Add a marker in Sydney and move the camera
  76. LatLng brazil = new LatLng(-18, -48);
  77.  
  78. mMap.setInfoWindowAdapter(new UserAdapter());
  79. mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(brazil,4));
  80.  
  81. sendMark(new Location(0,0));
  82. mMap.setOnMapLongClickListener(this);
  83.  
  84. mDatabase.addChildEventListener(new ChildEventListener() {
  85. @Override
  86. public void onChildAdded(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  87. Location childLocation = dataSnapshot.getValue(Location.class);
  88. LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
  89. MarkerOptions markerOptions =new MarkerOptions().position(childPos);
  90. Marker marker = mMap.addMarker(markerOptions);
  91. userMarkers.put(dataSnapshot.getKey(),marker);
  92. }
  93.  
  94. @Override
  95. public void onChildChanged(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  96. Location childLocation = dataSnapshot.getValue(Location.class);
  97. Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
  98. oldMarker.remove();
  99. LatLng childPos = new LatLng(childLocation.getLat(),childLocation.getLang());
  100. MarkerOptions markerOptions =new MarkerOptions().position(childPos);
  101. Marker marker = mMap.addMarker(markerOptions);
  102. userMarkers.put(dataSnapshot.getKey(),marker);
  103. }
  104.  
  105. @Override
  106. public void onChildRemoved(com.google.firebase.database.DataSnapshot dataSnapshot) {
  107. Marker oldMarker = userMarkers.get(dataSnapshot.getKey());
  108. oldMarker.remove();
  109. userMarkers.remove(dataSnapshot.getKey());
  110. }
  111.  
  112. @Override
  113. public void onChildMoved(com.google.firebase.database.DataSnapshot dataSnapshot, String s) {
  114.  
  115. }
  116.  
  117. @Override
  118. public void onCancelled(DatabaseError databaseError) {
  119.  
  120. }});}
  121.  
  122.  
  123.  
  124. @Override
  125. public void onMapLongClick(LatLng latLng) {
  126. Location location=new Location(latLng.latitude,latLng.longitude);
  127. sendMark(location);
  128. }
  129.  
  130. private void sendMark(Location location){
  131. String userName="silvio";//TODO: pegar nome de usuΓ‘rio verdadeiro
  132. mDatabase.child("locations")
  133. .child(userName).setValue(location);
  134. }
  135.  
  136.  
  137. private class UserAdapter implements GoogleMap.InfoWindowAdapter{
  138. private View view;
  139.  
  140. public UserAdapter(){
  141. view=getLayoutInflater().inflate(R.layout.user_info,null);
  142. }
  143.  
  144. @Override
  145. public View getInfoWindow(Marker marker) {
  146. final TextView name = (TextView) view.findViewById(R.id.userName);
  147. final ImageView avatar = (ImageView) view.findViewById(R.id.userAvatar);
  148.  
  149. String userId = userMarkers.getKey(marker);
  150. mDatabase.child("users").child(userId).addListenerForSingleValueEvent(new ValueEventListener() {
  151. @Override
  152. public void onDataChange(com.google.firebase.database.DataSnapshot dataSnapshot) {
  153. User user = dataSnapshot.getValue(User.class);
  154. name.setText(user.getName());
  155. Picasso.with(MapsActivity.this).load(user.getAvatar()).into(avatar);
  156.  
  157. }
  158.  
  159. @Override
  160. public void onCancelled(DatabaseError databaseError) {
  161.  
  162. }
  163.  
  164.  
  165. });
  166.  
  167. return view;
  168. }
  169.  
  170. @Override
  171. public View getInfoContents(Marker marker) {
  172. return null;
  173. }
  174. }
  175.  
  176.  
  177. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement