diff --git a/.idea/misc.xml b/.idea/misc.xml index 960c647..d8d659e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -9,6 +9,9 @@ + + + diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java index 70c0e99..e01ee82 100644 --- a/app/src/main/java/com/example/nemophila/MapsFragment.java +++ b/app/src/main/java/com/example/nemophila/MapsFragment.java @@ -9,6 +9,7 @@ import androidx.core.content.res.ResourcesCompat; import androidx.fragment.app.DialogFragment; import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; import androidx.lifecycle.ViewModelProvider; import android.Manifest; @@ -29,9 +30,11 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; +import android.widget.TextView; import android.widget.Toast; import com.example.nemophila.databinding.ActivityMainBinding; +import com.example.nemophila.entities.Post; import com.example.nemophila.entities.Shop; import com.example.nemophila.viewmodels.FriendViewModel; import com.example.nemophila.viewmodels.PostsViewModel; @@ -51,6 +54,7 @@ import com.google.android.gms.maps.model.MarkerOptions; import com.google.common.collect.Maps; +import java.util.ArrayList; import java.util.Map; public class MapsFragment extends Fragment implements LocationListener { @@ -72,7 +76,7 @@ private Marker currentMarker; private BitmapDescriptor bd; private boolean isLongClick; - private + LocationManager locationManager; @@ -112,18 +116,42 @@ for (Shop shop : shops) { //受け取ったshopsにfriendsの投稿が含まれているかを確認,受け取ったshopsに対してMarkerが立っているかを確認 - if ( shopsViewModel.getMarker(shop) == null) { //フレンド以外の投稿のピンも立てたい場合 - //if( && shopsViewModel.getMarker(shop) == null) { + //if ( shopsViewModel.getMarker(shop) == null) { //フレンド以外の投稿のピンも立てたい場合 + postsViewModel.loadShopPost(shop.getSid()); + postsViewModel.getShopPostLiveData().observe(getActivity(), new Observer >() { + @Override + public void onChanged(ArrayList posts) { + ArrayList ids = postsViewModel.getUserIds(); - //各shopに対応するMarkerがなければMarkerを立てる - shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude()); - System.out.println(shopLatlng); - Marker createMaker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title("")); - //マーカーに店情報を持たせる - createMaker.setTag(shop); - //ShopToMarkerに紐づけ - shopsViewModel.setShopAndMarker(shop, createMaker); - } + for(int i = 0; i < ids.size(); i++) { + ArrayList fids = nemophila.getFriendIds(); + for(int j = 0; j < fids.size(); j++) { + if( ( ids.get(i).equals(fids.get(j)) || ids.get(i).equals(nemophila.getUid()) ) && shopsViewModel.getMarker(shop) == null ){ + + //各shopに対応するMarkerがなければMarkerを立てる + shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude()); + System.out.println(shopLatlng); + Marker createMaker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title("")); + //マーカーに店情報を持たせる + createMaker.setTag(shop); + //ShopToMarkerに紐づけ + shopsViewModel.setShopAndMarker(shop, createMaker); + } + } + } + } + }); +// if( shopsViewModel.getMarker(shop) == null) { +// +// //各shopに対応するMarkerがなければMarkerを立てる +// shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude()); +// System.out.println(shopLatlng); +// Marker createMaker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title("")); +// //マーカーに店情報を持たせる +// createMaker.setTag(shop); +// //ShopToMarkerに紐づけ +// shopsViewModel.setShopAndMarker(shop, createMaker); +// } } }); diff --git a/app/src/main/java/com/example/nemophila/Nemophila.java b/app/src/main/java/com/example/nemophila/Nemophila.java index a41a04d..00a9120 100644 --- a/app/src/main/java/com/example/nemophila/Nemophila.java +++ b/app/src/main/java/com/example/nemophila/Nemophila.java @@ -8,6 +8,7 @@ import com.example.nemophila.entities.Shop; import com.google.type.LatLng; +import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; @@ -198,4 +199,12 @@ public void removeFavoriteFriends(String favoriteFriend){ this.favoriteFriends.remove(favoriteFriend); } + public ArrayList getFriendIds() { + ArrayList friendIds = new ArrayList<>(); + for(AccountNameJson anj: friends) { + friendIds.add(anj.getUid()); + } + return friendIds; + } + }