diff --git a/app/build.gradle b/app/build.gradle
index 8f90306..c6040b1 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -36,7 +36,7 @@ android {
}
dependencies {
-
+ implementation 'com.google.maps:google-maps-services:0.15.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index fd3a723..079704c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,6 +1,9 @@
+
+
+ xmlns:tools="http://schemas.android.com/tools">
+
-
\ No newline at end of file
+
+
diff --git a/app/src/main/java/com/example/oplogy/AddressConverter.java b/app/src/main/java/com/example/oplogy/AddressConverter.java
new file mode 100644
index 0000000..8399583
--- /dev/null
+++ b/app/src/main/java/com/example/oplogy/AddressConverter.java
@@ -0,0 +1,27 @@
+//package com.example.oplogy;
+//import com.google.maps.GeoApiContext;
+//import com.google.maps.GeocodingApi;
+//import com.google.maps.model.GeocodingResult;
+//import com.google.type.LatLng;
+//
+//
+//public class AddressConverter {
+// public static LatLng convertAddressToLatLng(String address) {
+// try {
+// // Google MapsのAPIキーを使用してGeoApiContextオブジェクトを作成します
+// GeoApiContext context = new GeoApiContext.Builder()
+// .apiKey("AIzaSyBQ1Ak-I2NL5TP4K59ZI0VgzKk6HNZuusw") //GoogleMapsAPiのAPiキー
+// .build();
+// // GeocodingApiを使用して住所を緯度経度に変換します
+// GeocodingResult[] results = GeocodingApi.geocode(context, address).await();
+// if (results != null && results.length > 0) {
+// // 位置情報(緯度と経度)を返します
+// return results[0].geometry.location;
+// }
+// } catch (Exception e) {
+// e.printStackTrace();
+// }
+// // 結果が存在しない場合やエラーが発生した場合は、nullを返します
+// return null;
+// }
+//}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/oplogy/FirestoreReception.java b/app/src/main/java/com/example/oplogy/FirestoreReception.java
index 9f50d67..f8a71aa 100644
--- a/app/src/main/java/com/example/oplogy/FirestoreReception.java
+++ b/app/src/main/java/com/example/oplogy/FirestoreReception.java
@@ -4,13 +4,11 @@ import android.util.Log;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
-import com.google.firebase.Timestamp;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
-import java.util.List;
import java.util.Map;
public class FirestoreReception {
@@ -22,7 +20,7 @@ public class FirestoreReception {
}
//ClassIdを引数にデータの作成を行う
- public void getDocumentsByClassId(int classId) {
+ public void getDocumentsByClassId(int classId, MainActivity context) {
CollectionReference collectionRef = db.collection("QuestionnaireForms");
// classIdが引数のものを取得する
@@ -35,27 +33,9 @@ public class FirestoreReception {
for (QueryDocumentSnapshot document : task.getResult()) {
Map data = document.getData();
- // デバッグ用のログ出力
- Log.d("FirestoreReception", "Document ID: " + document.getId());
- Log.d("FirestoreReception", "Data: " + data);
-
- // ここでデータを取得し、必要に応じて処理を行います
-// String parentName = (String) data.get("patronName");
-// String childName = (String) data.get("childName");
-// String studentId = (String) data.get("studentNumber");
-//// Timestamp address = (Timestamp) data.get("address");
-// List firstDay = (List) data.get("firstDay");
-// List secondDay = (List) data.get("secondDay");
-// List thirdDay = (List) data.get("thirdDay");
-//
-// // 取得したデータを使って必要な処理を行う
-// Log.d("FirestoreReception", "ParentName: " + parentName);
-// Log.d("FirestoreReception", "ChildName: " + childName);
-// Log.d("FirestoreReception", "StudentNumber: " + studentId);
-//// Log.d("FirestoreReception", "Address: " + address.toDate());
-// Log.d("FirestoreReception", "First Day: " + firstDay);
-// Log.d("FirestoreReception", "Second Day: " + secondDay);
-// Log.d("FirestoreReception", "Third Day: " + thirdDay);
+ // CreateRootクラスのインスタンスを作成し、dataを引数として渡す
+ GeoCoder geoCoder = new GeoCoder();
+ geoCoder.processData(data, context);
}
} else {
Log.w("FirestoreReception", "Error getting documents.", task.getException());
diff --git a/app/src/main/java/com/example/oplogy/GeoCoder.java b/app/src/main/java/com/example/oplogy/GeoCoder.java
new file mode 100644
index 0000000..76d994a
--- /dev/null
+++ b/app/src/main/java/com/example/oplogy/GeoCoder.java
@@ -0,0 +1,59 @@
+package com.example.oplogy;
+
+import android.content.Context;
+import android.location.Address;
+import android.location.Geocoder;
+import android.util.Log;
+
+import com.google.android.gms.maps.model.LatLng;
+import com.google.firebase.Timestamp;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+
+public class GeoCoder {
+ private Context context;
+
+ public void processData(Map data, Context context) {
+ try {
+ this.context = context;
+
+ //家庭訪問先の住所
+ List address = (List) data.get("address");
+ //家庭訪問の第一希望日(配列0が希望時間帯のはじめ、配列1がおわり)
+ List firstDay = (List) data.get("firstDay");
+ //出席番号
+ Long studentNumber = (Long) data.get("studentNumber");
+ // 住所を緯度経度に変換
+ LatLng latLng = geocodeAddress(address.get(0));
+
+ Log.d("FirestoreReception", "address: " + address.get(0));
+ Log.d("FirestoreReception", "firstDay: " + firstDay.get(0));
+ Log.d("FirestoreReception", "firstDay: " + firstDay.get(1));
+ Log.d("FirestoreReception", "studentNumber: " + studentNumber);
+
+ // 緯度経度をLogに出力
+ Log.d("緯度経度", "latLng: "+latLng );
+ } catch (NullPointerException e) {
+ Log.e("NullPointerException", "getの中身がnull" + e);
+ }
+ }
+
+ private LatLng geocodeAddress(String address) {
+ try {
+ Geocoder geocoder = new Geocoder(context, Locale.getDefault());
+ List addresses = geocoder.getFromLocationName(address, 1);
+ if (addresses != null && !addresses.isEmpty()) {
+ Address addressResult = addresses.get(0);
+ double latitude = addressResult.getLatitude();
+ double longitude = addressResult.getLongitude();
+ return new LatLng(latitude, longitude);
+ }
+ } catch (IOException e) {
+ Log.e("GeocodingException", "Error geocoding address: " + address, e);
+ }
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/oplogy/MainActivity.java b/app/src/main/java/com/example/oplogy/MainActivity.java
index e8edf30..f8450ea 100644
--- a/app/src/main/java/com/example/oplogy/MainActivity.java
+++ b/app/src/main/java/com/example/oplogy/MainActivity.java
@@ -1,8 +1,5 @@
package com.example.oplogy;
-import androidx.appcompat.app.AlertDialog;
-import androidx.appcompat.app.AppCompatActivity;
-
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
@@ -12,6 +9,9 @@ import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
+import androidx.appcompat.app.AlertDialog;
+import androidx.appcompat.app.AppCompatActivity;
+
import com.google.firebase.firestore.FirebaseFirestore;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
@@ -65,7 +65,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
db = FirebaseFirestore.getInstance();
firestoreReception = new FirestoreReception();
- firestoreReception.getDocumentsByClassId(100);
+ firestoreReception.getDocumentsByClassId(100,MainActivity.this);
diff --git a/build.gradle b/build.gradle
index d1342f7..e8b1579 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,10 +1,11 @@
buildscript {
dependencies {
classpath 'com.google.gms:google-services:4.3.14'
+
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '8.0.2' apply false
id 'com.android.library' version '8.0.2' apply false
id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' version '2.0.1' apply false
-}
\ No newline at end of file
+}