diff --git a/app/src/main/java/com/example/nemophila/MainActivity.java b/app/src/main/java/com/example/nemophila/MainActivity.java index a4fd69f..6e94b55 100644 --- a/app/src/main/java/com/example/nemophila/MainActivity.java +++ b/app/src/main/java/com/example/nemophila/MainActivity.java @@ -31,6 +31,7 @@ import com.google.android.gms.maps.SupportMapFragment; import com.google.android.gms.maps.model.BitmapDescriptor; import com.google.android.gms.maps.model.BitmapDescriptorFactory; +import com.google.android.gms.maps.model.CameraPosition; import com.google.android.gms.maps.model.GroundOverlay; import com.google.android.gms.maps.model.GroundOverlayOptions; import com.google.android.gms.maps.model.LatLng; @@ -39,6 +40,8 @@ import com.google.android.gms.maps.model.MarkerOptions; import com.example.nemophila.databinding.ActivityMainBinding; +import java.util.Locale; + public class MainActivity extends FragmentActivity implements OnMapReadyCallback,LocationListener { ShopsViewModel shopsViewModel; @@ -50,7 +53,10 @@ private LatLng testLatlng2; private LatLng initialLatlng; private LatLng shopLatlng; - + private LatLng tapLatlng; + private CameraPosition nowCamera; + private LatLng nowLatlng; + private float nowZoom = 10f; private GroundOverlay currentOverlay; LocationManager locationManager; @@ -71,7 +77,7 @@ // lambda式 button1.setOnClickListener( v -> { Log.d("debug", "currentbutton, 現在地にカメラを移動"); - shopsViewModel.setViewArea(currentLatlng.longitude+20, currentLatlng.latitude+20.0, currentLatlng.longitude-20.0, currentLatlng.latitude-20.0); + //shopsViewModel.setViewArea(currentLatlng.longitude+20, currentLatlng.latitude+20.0, currentLatlng.longitude-20.0, currentLatlng.latitude-20.0); System.out.println(shopsViewModel.getShopsLiveData().getValue()); //現在地にカメラを移動 zoomMap(currentLatlng.latitude, currentLatlng.longitude); @@ -148,28 +154,36 @@ // initialLatlng = new LatLng(34.5,12.3); //初期画面に移動 -// mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatlng, 5f)); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(initialLatlng, 15f)); //標準のマーカー(店用のピン) - setMarker(latitude, longitude); + //setMarker(latitude, longitude); //アイコン画像をマーカーに設定 //画像関連がわかっていないのでパス //setIcon(latitude, longitude); + //画面が動いたとき + mMap.setOnCameraIdleListener(() -> { + //カメラの座標とZOOM倍率を保存 + nowCamera = mMap.getCameraPosition(); + nowLatlng = new LatLng(nowCamera.target.latitude, nowCamera.target.longitude); + nowZoom = nowCamera.zoom; + //Shopの描画範囲を指定 + shopsViewModel.setViewArea(nowLatlng.longitude+1, nowLatlng.latitude+1, nowLatlng.longitude-1, nowLatlng.latitude-1); + }); + /* //多分使わない // タップした時のリスナーをセット mMap.setOnMapClickListener(tapLocation -> { // map(ピン以外)をtapされた位置の緯度経度 - latlng = new LatLng(tapLocation.latitude, tapLocation.longitude); - String str = String.format(Locale.US, "%f, %f", tapLocation.latitude, tapLocation.longitude); - mMap.addMarker(new MarkerOptions().position(location).title(str)); - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 18)); + tapLatlng = new LatLng(tapLocation.latitude, tapLocation.longitude); + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(tapLatlng, nowZoom)); + shopsViewModel.setViewArea(tapLatlng.longitude+1, tapLatlng.latitude+1, tapLatlng.longitude-1, tapLatlng.latitude-1); }); - */ + */ //長押し時に店を作成し、その座標にピンを立てる //長押し時にその座標を保存し、投稿画面に移り、Shop作成完了時にはピンを立て、Shop画面に移行 @@ -206,17 +220,11 @@ //店の詳細と投稿一覧を表示 //ここでshopActivityを呼び出す - - //下からクリックしたことを通知 Toast.makeText(MainActivity.this, "ピンクリック", Toast.LENGTH_SHORT).show(); -// //選んだ店をsetする(現状はnullになっているが後で直す) -// nemophila.setCurrentShop((Shop)marker.getTag()); -// System.out.println(nemophila.getCurrentShop().getName()); - - //テスト用 - //画面スクロールに応じて以下の1行を実行するようにする - shopsViewModel.setViewArea(41.0, 140.0, 20.0, 100.0); + //選んだ店をsetする(現状はnullになっているが後で直す) + nemophila.setCurrentShop((Shop)marker.getTag()); + System.out.println(nemophila.getCurrentShop().getName()); return false; } @@ -238,9 +246,6 @@ markerOptions2.title(null); mMap.addMarker(markerOptions2); - // ズーム - //zoomMap(latitude, longitude); - } private void zoomMap(double latitude, double longitude){ @@ -267,7 +272,7 @@ newLatLngBounds(bounds, width, height, 0)); //ズーム処理 - mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, 15f)); + mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latlng, nowZoom)); } //現在地の表示 @@ -374,19 +379,6 @@ //LatLng型で受け取っておく currentLatlng = new LatLng(location.getLatitude(), location.getLongitude()); - /* - テスト用。現在座標を画面に表示 - */ -// // 緯度の表示 -// TextView textView1 = findViewById(R.id.text_view1); -// String str1 = "Latitude:"+location.getLatitude(); -// textView1.setText(str1); -// -// // 経度の表示 -// TextView textView2 = findViewById(R.id.text_view2); -// String str2 = "Longitude:"+location.getLongitude(); -// textView2.setText(str2); - //現在地アイコンを表示.このsetIcon内にzoomMap処理もあるので注意 setIcon(location.getLatitude(),location.getLongitude()); }