diff --git a/app/src/main/java/com/example/nemophila/MainActivity.java b/app/src/main/java/com/example/nemophila/MainActivity.java index 93d7107..ae679f2 100644 --- a/app/src/main/java/com/example/nemophila/MainActivity.java +++ b/app/src/main/java/com/example/nemophila/MainActivity.java @@ -52,9 +52,10 @@ private LatLng latlng; private LatLng latlng2; + MapView mapV = null; //MapController mc = null; - + private GroundOverlay current_overlay; LocationManager locationManager; @Override @@ -132,6 +133,7 @@ //投稿が完了した場合 //ピンをその座標に立て、緯度経度をタイトルに設定 //タイトルはnullにする予定 + //↓返り値でMarkerを返すので、Nemophilaに渡す予定 mMap.addMarker(new MarkerOptions().position(newlocation).title(""+longpushLocation.latitude+" :"+ longpushLocation.longitude)); //ピンを立てた位置にカメラを移動 mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(newlocation, 18)); @@ -152,9 +154,8 @@ } - //ピンの設定 + //ピンの初期設定。完成時不要 private void setMarker(double latitude, double longitude){ - MarkerOptions markerOptions = new MarkerOptions(); MarkerOptions markerOptions2 = new MarkerOptions(); @@ -198,11 +199,14 @@ } private void setIcon(double latitude, double longitude){ - Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.icon_current,null); + //Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.icon_current,null); + //更新前の現在地アイコンを消去 + if(current_overlay != null) { + current_overlay.remove(); + } - //LatLng current_location = new LatLng(34.73080,135.2630272); LatLng current_location = new LatLng(latitude,longitude); - //mMap.addMarker(new MarkerOptions().position(current_location).icon(BitmapDescriptorFactory.fromResource(R.drawable.icon))); + // マップに貼り付ける BitmapDescriptor生成 BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_current); //Drawable ic_current = ResourcesCompat.getDrawable(getResources(),R.drawable.ic_current_location,null); @@ -220,88 +224,16 @@ overlayOptions.position(current_location, 200f, 200f); // マップに貼り付け・アルファを設定 - GroundOverlay overlay = mMap.addGroundOverlay(overlayOptions); + current_overlay = mMap.addGroundOverlay(overlayOptions); + // カメラを移動 zoomMap(latitude, longitude); // 透明度 - assert overlay != null; - overlay.setTransparency(0.0F); + assert current_overlay != null; + current_overlay.setTransparency(0.8F); } - protected void setCurrent(Location location){ - if(location == null){ - return; - } - // LocationからGeoPointへ変換 - Double latitude = location.getLatitude() * 1E6; - Double longitude = location.getLongitude() * 1E6; - GeoPoint geoPoint = new GeoPoint(latitude.intValue(), - longitude.intValue()); - /* - //地図の中央に設定 - mc.setCenter(geoPoint); - */ - - /* - // 目標値の座標にイメージを描画 - if( currentLocationOverlay == null){ - // 初回はOverlayを作成 - BitmapDescriptor descriptor = BitmapDescriptorFactory.fromResource(R.drawable.icon_current); - currentLocationOverlay = new CurrentLocationOverlay(bmp); - currentLocationOverlay.setGeoPoint(geoPoint); - // Overlayの追加 - mapV.getOverlays().add(currentLocationOverlay); - } - else{ - // 2回目以降はOverlayを再利用 - currentLocationOverlay.setGeoPoint(geoPoint); - // 無効にして再描画 - mapV.invalidate(); - } -*/ - - } - - /* - public class CurrentLocationOverlay extends Overlay { - // 描画するイメージ - private Bitmap bmp; - // 描画する座標 - private GeoPoint geoPoint; - public CurrentLocationOverlay(Bitmap bmp) { - this.bmp = bmp; - } - public GeoPoint getGeoPoint() { - return geoPoint; - } - public void setGeoPoint(GeoPoint geoPoint) { - this.geoPoint = geoPoint; - } - - @Override - public void draw(Canvas canvas, MapView mapView, boolean shadow) - { - // shadow = true,falseで2回呼び出される - if( !shadow){ - - // Mapの表示位置と座標から画面の描画位置を算出 - Projection pro = mapView.getProjection(); - Point p = pro.toPixels(geoPoint,null); - - // 中心がくるように調整 - int centerX = p.x - bmp.getWidth() / 2; - int centerY = p.y - bmp.getHeight() / 2; - - // 画像の描画 - canvas.drawBitmap(bmp, centerX, centerY, null); - } - } - } - */ - - - private final ActivityResultLauncher requestPermissionLauncher = registerForActivityResult(