diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
index e58179e..c71e415 100644
--- a/.idea/deploymentTargetDropDown.xml
+++ b/.idea/deploymentTargetDropDown.xml
@@ -7,11 +7,11 @@
-
+
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/example/nemophila/MapsActivity.java b/app/src/main/java/com/example/nemophila/MapsActivity.java
index 0702432..13efa24 100644
--- a/app/src/main/java/com/example/nemophila/MapsActivity.java
+++ b/app/src/main/java/com/example/nemophila/MapsActivity.java
@@ -43,6 +43,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
@@ -52,6 +53,7 @@
ShopsViewModel shopsViewModel;
FriendViewModel friendViewModel;
DialogFragment filterDialog;
+ MapsFragment mapsFragment;
private Handler handler;
//private HashMap NameToId;
@@ -281,6 +283,10 @@
return false;
}
+ public void setMapsFragment(MapsFragment mapsFragment) {
+ this.mapsFragment = mapsFragment;
+ }
+
// 内部クラス
private class MyAdapter extends ArrayAdapter {
private LayoutInflater layoutInflater;
@@ -355,42 +361,54 @@
for (Shop shop : shops) {
Marker setMarker = shopsViewModel.getMarker(shop);
- //場合分け
- //フィルターを一切かけていないとき
- if(nemophila.getSelectGenres().isEmpty() && nemophila.getSelectFriends().isEmpty()){
- setMarker.setVisible(true);
- }
- //ジャンルのみフィルターをかけているとき
- else if(nemophila.getSelectFriends().isEmpty()) {
- for(String genre : nemophila.getSelectGenres()) {
- if(shop.getGenreSet().contains(genre)) {
- setMarker.setVisible(true);
- } else {
- setMarker.setVisible(false);
- }
+ ArrayList userIdSet = (ArrayList)shop.getUserIdSet().clone();
+ friendsData.add(nemophila.getUid());
+ userIdSet.retainAll(friendsData);
+
+ //自分とそのフレンド以外の投稿は確認しない
+ if( userIdSet.size() > 0) {
+ //場合分け
+ //フィルターを一切かけていないとき
+ if(nemophila.getSelectGenres().isEmpty() && nemophila.getSelectFriends().isEmpty()){
+ setMarker.setVisible(true);
}
- }
- //フレンドのみフィルターをかけているとき
- else if(nemophila.getSelectGenres().isEmpty()) {
- for(String friendId : nemophila.getSelectFriends()) {
- if(shop.getUserIdSet().contains(friendId)) {
- setMarker.setVisible(true);
- } else {
- setMarker.setVisible(false);
- }
- }
- }
- //どちらもフィルターをかけているとき
- else {
- for(String genre : nemophila.getSelectGenres()) {
- for(String friendId : nemophila.getSelectFriends()) {
- if (shop.getGenreSet().contains(genre) && shop.getUserIdSet().contains(friendId)) {
+ //ジャンルのみフィルターをかけているとき
+ else if(nemophila.getSelectFriends().isEmpty()) {
+ for(String genre : nemophila.getSelectGenres()) {
+ if(shop.getGenreSet().contains(genre)) {
setMarker.setVisible(true);
+ break;
} else {
setMarker.setVisible(false);
}
}
}
+ //フレンドのみフィルターをかけているとき
+ else if(nemophila.getSelectGenres().isEmpty()) {
+ for(String friendId : nemophila.getSelectFriends()) {
+ if(shop.getUserIdSet().contains(friendId)) {
+ setMarker.setVisible(true);
+ break;
+ } else {
+ setMarker.setVisible(false);
+ }
+ }
+ }
+ //どちらもフィルターをかけているとき
+ else {
+ for(String genre : nemophila.getSelectGenres()) {
+ for(String friendId : nemophila.getSelectFriends()) {
+ if (shop.getGenreSet().contains(genre) && shop.getUserIdSet().contains(friendId)) {
+ setMarker.setVisible(true);
+ break;
+ } else {
+ setMarker.setVisible(false);
+ }
+ }
+ }
+ }
+ } else {
+ setMarker.setVisible(false);
}
}
}
diff --git a/app/src/main/java/com/example/nemophila/MapsFragment.java b/app/src/main/java/com/example/nemophila/MapsFragment.java
index 053faca..20e9e3d 100644
--- a/app/src/main/java/com/example/nemophila/MapsFragment.java
+++ b/app/src/main/java/com/example/nemophila/MapsFragment.java
@@ -35,6 +35,7 @@
import android.widget.Toast;
import com.example.nemophila.databinding.ActivityMainBinding;
+import com.example.nemophila.entities.AccountNameJson;
import com.example.nemophila.entities.Post;
import com.example.nemophila.entities.Shop;
import com.example.nemophila.viewmodels.FriendViewModel;
@@ -70,14 +71,10 @@
private LatLng currentLatlng = null;
private LatLng initialLatlng;
private LatLng shopLatlng;
-// private LatLng testLatlng;
-// private LatLng testLatlng2;
private LatLng tapLatlng;
-// private CameraPosition nowCamera;
-// private LatLng nowLatlng;
private Marker currentMarker;
private BitmapDescriptor bd;
- private boolean isLongClick;
+ ArrayList friendsData;
LocationManager locationManager;
@@ -95,7 +92,7 @@
friendViewModel = new ViewModelProvider(getActivity()).get(FriendViewModel.class);
postsViewModel = new ViewModelProvider(getActivity()).get(PostsViewModel.class);
-
+ friendsData = new ArrayList<>();
//フレンドの更新が入った時の処理(LiveDataへの購読)
friendViewModel.getFriends(nemophila.getUid());
friendViewModel.getFriendsLiveData().observe(getActivity(), friends -> {
@@ -105,6 +102,9 @@
.show();
//nemophilaにセットしておく
nemophila.setFriends(friends);
+ for (AccountNameJson friend : friends) {
+ friendsData.add(friend.getUid());
+ }
});
@@ -117,37 +117,66 @@
.show();
for (Shop shop : shops) {
if ( shopsViewModel.getMarker(shop) == null) { //フレンド以外の投稿のピンも立てたい場合
-
//各shopに対応するMarkerがなければMarkerを立てる
shopLatlng = new LatLng(shop.getLatitude(), shop.getLongitude());
System.out.println(shopLatlng);
Marker createMarker = mMap.addMarker(new MarkerOptions().position(shopLatlng).title(""));
//マーカーに店情報を持たせる
createMarker.setTag(shop);
- //フィルター掛け
- for(String genre : nemophila.getSelectGenres()) {
- if(shop.getGenreSet().contains(genre)) {
- createMarker.setVisible(true);
- } else {
- createMarker.setVisible(false);
- }
- }
-
-// if ( !nemophila.getSelectFriends().isEmpty() ) {
-// createMaker.setVisible(false);
-// }
//ShopToMarkerに紐づけ
shopsViewModel.setShopAndMarker(shop, createMarker);
- } else {
-// //すでに立っているピンをフィルター掛け
-// Marker setMaker = shopsViewModel.getMarker(shop);
-// if ( !nemophila.getSelectGenres().isEmpty() ) {
-// setMaker.setVisible(false);
-// }
-// if ( !nemophila.getSelectFriends().isEmpty() ) {
-// setMaker.setVisible(false);
-// }
+ System.out.println(friendsData);
+
+ ArrayList userIdSet = (ArrayList)shop.getUserIdSet().clone();
+ friendsData.add(nemophila.getUid());
+ userIdSet.retainAll(friendsData);
+
+ //自分とそのフレンド以外の投稿は確認しない
+ if( userIdSet.size() > 0) {
+ //場合分け
+ //フィルターを一切かけていないとき
+ if(nemophila.getSelectGenres().isEmpty() && nemophila.getSelectFriends().isEmpty()){
+ createMarker.setVisible(true);
+ }
+ //ジャンルのみフィルターをかけているとき
+ else if(nemophila.getSelectFriends().isEmpty()) {
+ for(String genre : nemophila.getSelectGenres()) {
+ if(shop.getGenreSet().contains(genre)) {
+ createMarker.setVisible(true);
+ break;
+ } else {
+ createMarker.setVisible(false);
+ }
+ }
+ }
+ //フレンドのみフィルターをかけているとき
+ else if(nemophila.getSelectGenres().isEmpty()) {
+ for(String friendId : nemophila.getSelectFriends()) {
+ if(shop.getUserIdSet().contains(friendId)) {
+ createMarker.setVisible(true);
+ break;
+ } else {
+ createMarker.setVisible(false);
+ }
+ }
+ }
+ //どちらもフィルターをかけているとき
+ else {
+ for(String genre : nemophila.getSelectGenres()) {
+ for(String friendId : nemophila.getSelectFriends()) {
+ if (shop.getGenreSet().contains(genre) && shop.getUserIdSet().contains(friendId)) {
+ createMarker.setVisible(true);
+ break;
+ } else {
+ createMarker.setVisible(false);
+ }
+ }
+ }
+ }
+ } else {
+ createMarker.setVisible(false);
+ }
}
}
});
@@ -198,11 +227,6 @@
//長押し時に店を作成し、その座標にピンを立てる
//長押し時にその座標を保存し、投稿画面に移り、Shop作成完了時にはピンを立て、Shop画面に移行
mMap.setOnMapLongClickListener(longpushLocation -> {
- //長押しされた位置の緯度経度を取得
- //LatLng newlocation = new LatLng(longpushLocation.latitude, longpushLocation.longitude);
-
- //長押し座標を画面中心にしておく
- //zoomMap(longpushLocation.latitude, longpushLocation.longitude);
//Nemophilaに座標を保存
nemophila.setCurrentLatitude(longpushLocation.latitude);
nemophila.setCurrentLongitude(longpushLocation.longitude);
@@ -220,12 +244,6 @@
mMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
- //店の詳細と投稿一覧を表示
- //ここでshopActivityを呼び出す
-
- //下からクリックしたことを通知
- //Toast.makeText(getActivity(), "ピンクリック", Toast.LENGTH_SHORT).show();
-
//現在地マーカーをクリックしたときのみ例外
if(marker.getTag() == null) {
//以下の処理をストップ
@@ -260,9 +278,6 @@
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
- //binding = ActivityMainBinding.inflate(getLayoutInflater());
- //getActivity().setContentView(binding.getRoot());
-
if (ActivityCompat.checkSelfPermission(
getContext(),
Manifest.permission.ACCESS_FINE_LOCATION)
@@ -275,11 +290,7 @@
locationStart();
}
-// // Obtain the SupportMapFragment and get notified when the map is ready to be used.
-// SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
-// .findFragmentById(R.id.map);
-// assert mapFragment != null;
-// mapFragment.getMapAsync(this);
+ ((MapsActivity) getContext()).setMapsFragment(this);
SupportMapFragment mapFragment =
(SupportMapFragment) getChildFragmentManager().findFragmentById(R.id.map);
@@ -303,7 +314,6 @@
LatLng latlng = new LatLng(latitude, longitude);
- // LatLngBounds (LatLng southwest, LatLng northeast)
//左下、右上
LatLngBounds bounds = LatLngBounds.builder()
.include(new LatLng(south, west))