|
|
@@ -1,13 +1,20 @@
|
|
|
package com.aaron.kakao.hospitalmapfortube.ui.main
|
|
|
|
|
|
import android.Manifest
|
|
|
+import android.content.ActivityNotFoundException
|
|
|
import android.content.Context
|
|
|
+import android.content.Intent
|
|
|
import android.content.pm.PackageManager
|
|
|
+import android.net.Uri
|
|
|
import android.os.Build
|
|
|
import android.os.Bundle
|
|
|
import android.support.v4.app.ActivityCompat
|
|
|
+import android.support.v7.app.AlertDialog
|
|
|
+import android.widget.ArrayAdapter
|
|
|
import android.widget.Toast
|
|
|
import com.aaron.kakao.hospitalmapfortube.R
|
|
|
+import com.aaron.kakao.hospitalmapfortube.data.remote.model.CATEGORY_HOSPITAL
|
|
|
+import com.aaron.kakao.hospitalmapfortube.data.remote.model.CATEGORY_PHARMACY
|
|
|
import com.aaron.kakao.hospitalmapfortube.data.remote.model.Document
|
|
|
import com.aaron.kakao.hospitalmapfortube.databinding.ActivityMainBinding
|
|
|
import com.aaron.kakao.hospitalmapfortube.ui.BindingActivity
|
|
|
@@ -19,9 +26,14 @@ import net.daum.mf.map.api.MapPoint
|
|
|
import net.daum.mf.map.api.MapView
|
|
|
import org.koin.android.viewmodel.ext.android.getViewModel
|
|
|
|
|
|
+private const val NAVI_TYPE_CAR = "CAR"
|
|
|
+private const val NAVI_TYPE_PUBLICTRANSIT = "PUBLICTRANSIT"
|
|
|
+private const val NAVI_TYPE_FOOT = "FOOT"
|
|
|
+
|
|
|
class MainActivity : BindingActivity<ActivityMainBinding, MainViewModel>() {
|
|
|
|
|
|
private val mapView by lazy { MapView(this) }
|
|
|
+
|
|
|
// 런타임 퍼미션 체크 필요 여부
|
|
|
private val needPermission: Boolean
|
|
|
get() {
|
|
|
@@ -152,8 +164,8 @@ class MainActivity : BindingActivity<ActivityMainBinding, MainViewModel>() {
|
|
|
MapPoint.mapPointWithGeoCoord(document.y.toDouble(), document.x.toDouble())
|
|
|
tag = document.id.toInt()
|
|
|
markerType = when (document.category_group_code) {
|
|
|
- "HP8" -> MapPOIItem.MarkerType.BluePin
|
|
|
- "PM9" -> MapPOIItem.MarkerType.YellowPin
|
|
|
+ CATEGORY_HOSPITAL -> MapPOIItem.MarkerType.BluePin
|
|
|
+ CATEGORY_PHARMACY -> MapPOIItem.MarkerType.YellowPin
|
|
|
else -> MapPOIItem.MarkerType.RedPin
|
|
|
}
|
|
|
selectedMarkerType = MapPOIItem.MarkerType.RedPin
|
|
|
@@ -227,9 +239,6 @@ class MainActivity : BindingActivity<ActivityMainBinding, MainViewModel>() {
|
|
|
|
|
|
override fun onMapViewLongPressed(mv: MapView?, p1: MapPoint?) {
|
|
|
mapView.moveCurrentLocation(this@MainActivity)
|
|
|
-// if (!needPermission) {
|
|
|
-// showCurrentLocationMarker()
|
|
|
-// }
|
|
|
Toast.makeText(this@MainActivity, R.string.message_move_current, Toast.LENGTH_SHORT)
|
|
|
.show()
|
|
|
}
|
|
|
@@ -245,9 +254,14 @@ class MainActivity : BindingActivity<ActivityMainBinding, MainViewModel>() {
|
|
|
|
|
|
override fun onCalloutBalloonOfPOIItemTouched(
|
|
|
p0: MapView?,
|
|
|
- p1: MapPOIItem?,
|
|
|
+ mapPOIItem: MapPOIItem?,
|
|
|
p2: MapPOIItem.CalloutBalloonButtonType?
|
|
|
) {
|
|
|
+ if (!needPermission) {
|
|
|
+ showNaviDialog(mapPOIItem!!.mapPoint)
|
|
|
+ } else {
|
|
|
+ Toast.makeText(this@MainActivity, getString(R.string.message_navi_permission), Toast.LENGTH_SHORT).show()
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
override fun onDraggablePOIItemMoved(p0: MapView?, p1: MapPOIItem?, p2: MapPoint?) {
|
|
|
@@ -259,6 +273,49 @@ class MainActivity : BindingActivity<ActivityMainBinding, MainViewModel>() {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 길찾기 다이얼로그 팝업
|
|
|
+ */
|
|
|
+ private fun showNaviDialog(mapPoint: MapPoint) {
|
|
|
+ val arrayAdapter =
|
|
|
+ ArrayAdapter<String>(this@MainActivity, android.R.layout.select_dialog_item)
|
|
|
+ .apply {
|
|
|
+ add(getString(R.string.navi_car))
|
|
|
+ add(getString(R.string.navi_publictransit))
|
|
|
+ add(getString(R.string.navi_foot))
|
|
|
+ }
|
|
|
+ AlertDialog.Builder(this@MainActivity).run {
|
|
|
+ setTitle(getString(R.string.navi_title))
|
|
|
+ setIcon(R.drawable.tube_icon)
|
|
|
+ setAdapter(arrayAdapter) { dialog, id ->
|
|
|
+ val naviType = when (id) {
|
|
|
+ 0 -> NAVI_TYPE_CAR
|
|
|
+ 1 -> NAVI_TYPE_PUBLICTRANSIT
|
|
|
+ else -> NAVI_TYPE_FOOT
|
|
|
+ }
|
|
|
+
|
|
|
+ var url = LocationUtil.getCurrentLocation(this@MainActivity).let {
|
|
|
+ String.format(
|
|
|
+ getString(R.string.url_daummap),
|
|
|
+ it!!.latitude,
|
|
|
+ it.longitude,
|
|
|
+ mapPoint.mapPointGeoCoord.latitude,
|
|
|
+ mapPoint.mapPointGeoCoord.longitude,
|
|
|
+ naviType
|
|
|
+ )
|
|
|
+ }
|
|
|
+
|
|
|
+ try {
|
|
|
+ startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
|
|
|
+ } catch (ex: ActivityNotFoundException) {
|
|
|
+ url = getString(R.string.market_url_daummap)
|
|
|
+ startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(url)))
|
|
|
+ }
|
|
|
+ dialog.dismiss()
|
|
|
+ }
|
|
|
+ }.show()
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 현재 위치로 이동
|
|
|
*/
|