Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- TypeScript
- array
- 리액트
- RecyclerView
- 코틀린
- GoogleMaps
- React
- Hook
- 랜덤넘버
- TextView
- JS
- Java
- button
- Android
- 스프링부트
- 랜덤번호
- fragment
- 자바스크립트
- SpringBoot
- Linux
- JavaScript
- Kotlin
- 구글맵스
- scrollview
- nodejs
- 오버라이딩
- stylesheet
- Javscript
- npm
- 안드로이드
Archives
- Today
- Total
타닥타닥 개발자의 일상
코틀린 kotlin 구글 맵스 이용하여 위도,경도 주소로 바꾸기 / 위도,경도 주소로 바꾸기 하는 안드로이드 화면 만들기 본문
코딩 기록/Kotlin
코틀린 kotlin 구글 맵스 이용하여 위도,경도 주소로 바꾸기 / 위도,경도 주소로 바꾸기 하는 안드로이드 화면 만들기
NomadHaven 2022. 2. 16. 22:43폴더 및 파일 구성
AndroidManifest.xml에 인터넷 접속 및 위치 추적 가능하게 하는 아래의 코드 삽입
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
코드 삽입된 전체 코드는 아래와 같다.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.geocoding">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Geocoding">
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="436dp"
android:layout_height="116dp"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.774"
android:id="@+id/textView"/>
<TextView
android:text="위도"
android:layout_width="50dp"
android:layout_height="50dp"
android:textSize="20dp"
android:id="@+id/textView2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.149"
app:layout_constraintVertical_bias="0.049"/>
<TextView
android:text="경도"
android:layout_width="50dp"
android:textSize="20dp"
android:layout_height="50dp"
android:id="@+id/textView3"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.149"
app:layout_constraintVertical_bias="0.171"/>
<EditText
android:layout_width="287dp"
android:layout_height="45dp"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editTextlat"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.552"
app:layout_constraintVertical_bias="0.054"/>
<EditText
android:layout_width="287dp"
android:layout_height="45dp"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editTextlong"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.552"
app:layout_constraintVertical_bias="0.17"/>
<EditText
android:layout_width="287dp"
android:layout_height="45dp"
android:inputType="textPersonName"
android:ems="10"
android:id="@+id/editTextadd"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.552"
app:layout_constraintVertical_bias="0.438"/>
<TextView
android:text="주소"
android:layout_width="50dp"
android:textSize="20dp"
android:layout_height="50dp"
android:id="@+id/textView4"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.149"
app:layout_constraintVertical_bias="0.435"/>
<Button
android:text="지도"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mapButton1"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.726"
app:layout_constraintVertical_bias="0.285"/>
<Button
android:text="주소로 변환"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/addrButton"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.455"
app:layout_constraintVertical_bias="0.285"/>
<Button
android:text="위도/경도 변환"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/latButton"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.475"
app:layout_constraintVertical_bias="0.552"/>
<Button
android:text="지도"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/mapButton2"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintHorizontal_bias="0.726"
app:layout_constraintVertical_bias="0.552"/>
</androidx.constraintlayout.widget.ConstraintLayout>
MainActivity.kt
package com.example.geocoding
import android.content.Intent
import android.location.Address
import android.location.Geocoder
import android.net.Uri
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import java.io.IOException
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//여행 -> 사진 : 위치 > 주소 > 위도, 경도
val textView = findViewById<TextView>(R.id.textView)
var addrBtn = findViewById<Button>(R.id.addrButton)
var mapBtn1 = findViewById<Button>(R.id.mapButton1)
var latBtn = findViewById<Button>(R.id.latButton)
var mapBtn2 = findViewById<Button>(R.id.mapButton2)
var latEdit = findViewById<EditText>(R.id.editTextlat)
var lonEdit = findViewById<EditText>(R.id.editTextlong)
var addrEdit = findViewById<EditText>(R.id.editTextadd)
val geocoder: Geocoder = Geocoder(this)
//변환 : 위도, 경도 > 주소
addrBtn.setOnClickListener {
var list:List<Address>? = null
try {
val d1: Double = latEdit.text.toString().toDouble()
val d2: Double = lonEdit.text.toString().toDouble()
list = geocoder.getFromLocation(d1, d2, 10) //10개의 데이터를 얻어오겠다.
} catch (e: IOException) {
Log.d("위도/경도", "입출력 오류")
}
if (list != null) {
if (list.isEmpty()) {
textView.text = "해당되는 주소는 없습니다."
} else { //정상적으로 산출된 주소
textView.text = list[0].toString()
}
}
}
mapBtn1.setOnClickListener {
val d1: Double = latEdit.text.toString().toDouble()
val d2: Double = lonEdit.text.toString().toDouble()
val intent = Intent(Intent.ACTION_VIEW, Uri.parse("geo:$d1,$d2"))
startActivity(intent)
}
//주소 > 위도, 경도
latBtn.setOnClickListener {
var list:List<Address>? = null
val str = addrEdit.text.toString()
try {
list = geocoder.getFromLocationName(str, 10)
} catch (e: IOException) {
}
if (list != null) {
if(list!!.isEmpty()){
textView.text = "해당되는 주소는 없습니다."
}else{
//textView.text = list!![0].toString()
textView.text = list!!.get(0).latitude.toString() + " " +
list!!.get(0).longitude.toString()
}
}
}
mapBtn2.setOnClickListener {
var list: List<Address>? = null
val str = addrEdit.text.toString()
try {
list = geocoder.getFromLocationName(str, 10)
} catch (e: IOException) {
}
if (list != null) {
if (list!!.isEmpty()) {
textView.text = "해당되는 주소는 없습니다."
} else {
val addr = list!![0]
val lat = addr.latitude
val lon = addr.longitude
val geo = String.format("geo:%f,%f", lat, lon)
val intent = Intent(Intent.ACTION_VIEW, Uri.parse(geo))
startActivity(intent)
}
}
}
}
}
실행 화면
'코딩 기록 > Kotlin' 카테고리의 다른 글
Comments