diff --git a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java index 88ea984..8a3b95a 100644 --- a/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java +++ b/app/src/main/java/com/example/nemophila/viewmodels/ShopsViewModel.java @@ -35,11 +35,13 @@ // ライブデータ final private MutableLiveData> shopsLiveData; + final private MutableLiveData> nearShopsLiveData; final private MutableLiveData currentShopLiveData; // コンストラクタ public ShopsViewModel() { this.shopsLiveData = new MutableLiveData<>(); + this.nearShopsLiveData = new MutableLiveData<>(); this.currentShopLiveData = new MutableLiveData<>(); this.retrofit = new Retrofit.Builder() .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/nemophila/") @@ -53,7 +55,10 @@ public LiveData> getShopsLiveData() { return this.shopsLiveData; } - public LiveData getCurrentLiveData() { return this.currentShopLiveData; } + + public LiveData getCurrentLiveData() { + return this.currentShopLiveData; + } // ShopToMarkerに新しく店と地図上のピンを紐づける public void setShopAndMarker(Shop shop, Marker marker) { @@ -61,7 +66,9 @@ } // ShopToMarkerからkeyを指定して、要素を削除する - public void removeShopAndMarker(Shop shop) { ShopToMarker.remove(shop); } + public void removeShopAndMarker(Shop shop) { + ShopToMarker.remove(shop); + } // 店に紐づいたピンを返す public Marker getMarker(Shop shop) { @@ -122,23 +129,48 @@ }); } - // 新しく店を生成する - public void createShop(String name, double longitude, double latitude) { - Call call = shopsRest.createShop(name, longitude, latitude); + public void longClickViewArea(double ux, double uy, double lx, double ly) { + // 画面内に収まる範囲の店舗を取得する + Call> call = shopsRest.getShops(ux, uy, lx, ly); - call.enqueue(new Callback() { + call.enqueue(new Callback>() { + // 通信が成功 @Override - public void onResponse(Call call, Response response) { + public void onResponse(Call> call, Response> response) { + // 通信が正常に動作 if (response.isSuccessful()) { - currentShopLiveData.setValue(response.body()); + nearShopsLiveData.setValue(response.body()); + } else { + System.out.println("ShopsViewModel : 通信失敗"); } } + // 通信が失敗 @Override - public void onFailure(Call call, Throwable t) { - System.out.println("通信失敗 : createShop"); - System.out.println(t); - } + public void onFailure(Call> call, Throwable t) { + System.out.println("setViewModel : 通信失敗"); + System.out.println(t); + } }); } -} + + // 新しく店を生成する + public void createShop (String name,double longitude, double latitude){ + Call call = shopsRest.createShop(name, longitude, latitude); + + call.enqueue(new Callback() { + @Override + public void onResponse(Call call, Response response) { + if (response.isSuccessful()) { + currentShopLiveData.setValue(response.body()); + } + } + + @Override + public void onFailure(Call call, Throwable t) { + System.out.println("通信失敗 : createShop"); + System.out.println(t); + } + }); + } + }