Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.robertoc.meublogclash;
- import android.provider.ContactsContract;
- import android.support.v4.app.FragmentActivity;
- import android.os.Bundle;
- import android.util.Log;
- import android.view.View;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.google.firebase.database.ChildEventListener;
- import com.firebase.client.DataSnapshot;
- import com.firebase.client.Firebase;
- import com.firebase.client.FirebaseError;
- 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.GoogleMap.OnMapClickListener;
- import com.google.android.gms.maps.MapFragment;
- 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.LatLngBounds;
- 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.google.firebase.database.Query;
- import com.squareup.picasso.Picasso;
- import org.apache.commons.collections4.BidiMap;
- import org.apache.commons.collections4.bidimap.DualHashBidiMap;
- import java.util.HashMap;
- import java.util.Map;
- public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, OnMapLongClickListener{
- private DatabaseReference mDatabase;
- private DatabaseReference mDatabase1;
- private DatabaseReference mDatabase2;
- private GoogleMap mMap;
- Firebase ref;
- private BidiMap<String,Marker> userMarkers;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_maps);
- Firebase.setAndroidContext(this);
- mDatabase = FirebaseDatabase.getInstance().getReference();
- mDatabase1 = FirebaseDatabase.getInstance().getReference().child("locations");
- mDatabase2 = FirebaseDatabase.getInstance().getReference().child("users");
- 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));
- sendMark(new Location(0,0));
- mMap.setOnMapLongClickListener(this);
- mDatabase.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);
- }
- @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="silvio";//TODO: pegar nome de usuΓ‘rio verdadeiro
- mDatabase.child("locations")
- .child(userName).setValue(location);
- }
- private class UserAdapter implements GoogleMap.InfoWindowAdapter{
- private View view;
- public UserAdapter(){
- view=getLayoutInflater().inflate(R.layout.user_info,null);
- }
- @Override
- public View getInfoWindow(Marker marker) {
- final TextView name = (TextView) view.findViewById(R.id.userName);
- final ImageView avatar = (ImageView) 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());
- Picasso.with(MapsActivity.this).load(user.getAvatar()).into(avatar);
- }
- @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