diff --git a/app/src/main/java/org/gdsc_android/picky_panda/AddDetailFragment.kt b/app/src/main/java/org/gdsc_android/picky_panda/AddDetailFragment.kt index 88093bc..88fa041 100644 --- a/app/src/main/java/org/gdsc_android/picky_panda/AddDetailFragment.kt +++ b/app/src/main/java/org/gdsc_android/picky_panda/AddDetailFragment.kt @@ -203,7 +203,9 @@ class AddDetailFragment : Fragment() { .build() val service = retrofit.create(ServiceApi::class.java) + // SharedPreferences + val sharedPreferences = requireActivity().getSharedPreferences("user_data", Context.MODE_PRIVATE) val accessToken = sharedPreferences.getString("accessToken", "") diff --git a/app/src/main/java/org/gdsc_android/picky_panda/GoogleMapFragment.kt b/app/src/main/java/org/gdsc_android/picky_panda/GoogleMapFragment.kt index cf7478e..24db429 100644 --- a/app/src/main/java/org/gdsc_android/picky_panda/GoogleMapFragment.kt +++ b/app/src/main/java/org/gdsc_android/picky_panda/GoogleMapFragment.kt @@ -1,6 +1,7 @@ package org.gdsc_android.picky_panda import android.app.AlertDialog +import android.content.Context import android.location.Geocoder import android.os.Bundle import androidx.fragment.app.Fragment @@ -28,6 +29,7 @@ class GoogleMapFragment : Fragment() { private lateinit var mapView: MapView private var googleMap: GoogleMap? = null /*private lateinit var placesClient: PlacesClient*/ + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -43,6 +45,21 @@ class GoogleMapFragment : Fragment() { // GoogleMap 초기화 및 설정 configureMapSettings() + // 지도 이동 이벤트 리스너 등록 + map.setOnCameraIdleListener { + // 지도가 이동이 멈추면 호출되는 콜백 + val visibleRegion = map.projection.visibleRegion + val northEast = visibleRegion.latLngBounds.northeast + val southWest = visibleRegion.latLngBounds.southwest + + // SharedPreferences에서 토큰을 가져온다. + val sharedPreferences = requireActivity().getSharedPreferences("user_data", Context.MODE_PRIVATE) + val accessToken = sharedPreferences.getString("accessToken", "") + val homeFragment = HomeFragment() + + homeFragment.inquireStoresOnMap(northEast, southWest, "Bearer $accessToken") + } + // 마커 추가 val markerOptions = MarkerOptions() .position(LatLng(37.5569, -126.9239)) // 마커의 위치 @@ -55,6 +72,8 @@ class GoogleMapFragment : Fragment() { // 여기에서 마커에 대한 상세 정보를 표시하는 등의 동작을 구현할 수 있습니다. true } + + } return view @@ -114,68 +133,6 @@ class GoogleMapFragment : Fragment() { } } - // Vegan 가게를 표시하는 함수 - /*fun showStoresOnMap(storeType: String) { - // 구글맵 관련 설정 및 초기화 등의 코드 추가 - - // storeType에 따라 마커를 표시하는 코드 추가 - if (storeType == "Vegan") { - // 마커를 추가하는 코드 - // 예시: 구글맵에 마커를 추가하는 코드 (실제로는 데이터베이스 또는 다른 소스에서 위치 정보를 가져와야 함) - val markerOptions = MarkerOptions() - .position(LatLng(37.7749, -122.4194)) // 가게의 위치 좌표 - .title("Vegan Store") - val marker = googleMap?.addMarker(markerOptions) - - // 마커 클릭 이벤트 처리 - marker?.let { nonNullMarker -> - nonNullMarker.setOnMarkerClickListener { clickedMarker -> - // 마커를 클릭했을 때 상세 정보 다이얼로그 또는 화면을 표시하는 코드 추가 - showStoreDetailsFragment("Vegan Store Details") - true - } - } - } else if (storeType == "Gluten Free") { - val markerOptions = MarkerOptions() - .position(LatLng(37.7749, -122.4194)) // 가게의 위치 좌표 - .title("Vegan Store") - val marker = googleMap?.addMarker(markerOptions) - - marker?.let { nonNullMarker -> - nonNullMarker.setOnMarkerClickListener { clickedMarker -> - // 마커를 클릭했을 때 상세 정보 다이얼로그 또는 화면을 표시하는 코드 추가 - showStoreDetailsFragment("Gluten Free Store Details") - true - } - } - } else if (storeType == "Lactose Intolerance") { - val markerOptions = MarkerOptions() - .position(LatLng(37.7749, -122.4194)) // 가게의 위치 좌표 - .title("Vegan Store") - val marker = googleMap?.addMarker(markerOptions) - - marker?.let { nonNullMarker -> - nonNullMarker.setOnMarkerClickListener { clickedMarker -> - // 마커를 클릭했을 때 상세 정보 다이얼로그 또는 화면을 표시하는 코드 추가 - showStoreDetailsFragment("Lactose Intolerance Store Details") - true - } - } - } else if (storeType == "Halal") { - val markerOptions = MarkerOptions() - .position(LatLng(37.7749, -122.4194)) // 가게의 위치 좌표 - .title("Vegan Store") - val marker = googleMap?.addMarker(markerOptions) - - marker?.let { nonNullMarker -> - nonNullMarker.setOnMarkerClickListener { clickedMarker -> - // 마커를 클릭했을 때 상세 정보 다이얼로그 또는 화면을 표시하는 코드 추가 - showStoreDetailsFragment("Halal Store Details") - true - } - } - }*/ - // 가게 목록을 표시하는 함수 fun showStoresOnMap(storeList: List) { // 구글맵 관련 설정 및 초기화 등의 코드 추가 diff --git a/app/src/main/java/org/gdsc_android/picky_panda/HomeFragment.kt b/app/src/main/java/org/gdsc_android/picky_panda/HomeFragment.kt index 4de71e4..bb9b443 100644 --- a/app/src/main/java/org/gdsc_android/picky_panda/HomeFragment.kt +++ b/app/src/main/java/org/gdsc_android/picky_panda/HomeFragment.kt @@ -20,19 +20,29 @@ import org.gdsc_android.picky_panda.databinding.FragmentHomeBinding import com.google.android.gms.maps.* import com.google.android.gms.maps.model.LatLng import com.google.android.gms.maps.model.MarkerOptions +import org.gdsc_android.picky_panda.data.ResponseInquireMapData +import org.gdsc_android.picky_panda.data.ServiceApi +import org.gdsc_android.picky_panda.data.ServiceCreator +import retrofit2.Call +import retrofit2.Callback +import retrofit2.Response class HomeFragment : Fragment() { private var _binding: FragmentHomeBinding? = null private val binding get() = _binding!! private lateinit var adapter: ArrayAdapter - + private lateinit var serviceApi: ServiceApi + private var googleMap: GoogleMap? = null override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { _binding = FragmentHomeBinding.inflate(layoutInflater, container, false) + //ServiceApi 초기화 + serviceApi = ServiceCreator.apiService + // FragmentTransaction을 사용하여 GoogleMapFragment 추가 val fragmentTransaction = childFragmentManager.beginTransaction() fragmentTransaction.replace(R.id.mapContainer, GoogleMapFragment()) @@ -44,41 +54,19 @@ class HomeFragment : Fragment() { // AutoCompleteTextView 설정 val searchView = view?.findViewById(R.id.searchView) searchView?.setAdapter(adapter) + // 검색 버튼 클릭 이벤트 처리 - val searchButton = view?.findViewById