sitelink1 | http://ghj1001020.tistory.com/301 |
---|---|
sitelink2 | |
sitelink3 |
java)
package com.ghj.blog_036;
import android.location.Location;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
//UI
TextView txtJava;
TextView txtAndroid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//UI
txtJava = (TextView)findViewById(R.id.txtJava);
txtAndroid = (TextView)findViewById(R.id.txtAndroid);
txtJava.setText(DistanceByDegree(37.476780, 126.981429, 37.504445, 127.049317)+"m");
txtAndroid.setText(DistanceByDegreeAndroid(37.476780, 126.981429, 37.504445, 127.049317)+"m");
}
//두지점(위도,경도) 사이의 거리
public double DistanceByDegree(double _latitude1, double _longitude1, double _latitude2, double _longitude2){
double theta, dist;
theta = _longitude1 - _longitude2;
dist = Math.sin(DegreeToRadian(_latitude1)) * Math.sin(DegreeToRadian(_latitude2)) + Math.cos(DegreeToRadian(_latitude1))
* Math.cos(DegreeToRadian(_latitude2)) * Math.cos(DegreeToRadian(theta));
dist = Math.acos(dist);
dist = RadianToDegree(dist);
dist = dist * 60 * 1.1515;
dist = dist * 1.609344; // 단위 mile 에서 km 변환.
dist = dist * 1000.0; // 단위 km 에서 m 로 변환
return dist;
}
//안드로이드 - 두지점(위도,경도) 사이의 거리
public double DistanceByDegreeAndroid(double _latitude1, double _longitude1, double _latitude2, double _longitude2){
Location startPos = new Location("PointA");
Location endPos = new Location("PointB");
startPos.setLatitude(_latitude1);
startPos.setLongitude(_longitude1);
endPos.setLatitude(_latitude2);
endPos.setLongitude(_longitude2);
double distance = startPos.distanceTo(endPos);
return distance;
}
//degree->radian 변환
public double DegreeToRadian(double degree){
return degree * Math.PI / 180.0;
}
//randian -> degree 변환
public double RadianToDegree(double radian){
return radian * 180d / Math.PI;
}
}
xml)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:text="(37.476780, 126.981429) 와 (37.504445, 127.049317) 사이의 거리"
android:textSize="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtJava"
android:textSize="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/txtAndroid"
android:textSize="24dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
결과
두 API 사이에 차이가 있다
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
8 | Application.mk | 황제낙엽 | 2017.03.28 | 177 |
7 | ABI 관리 | 황제낙엽 | 2017.03.28 | 627 |
6 | 안드로이드의 ABI 관리 | 황제낙엽 | 2017.03.28 | 173 |
» |
안드로이드 두지점(위도,경도) 사이의 거리
![]() | 황제낙엽 | 2017.01.25 | 343 |
4 |
[JUnit4] 테스트 클래스 만들기
![]() | 황제낙엽 | 2016.11.16 | 133 |
3 | Do it! 안드로이드 앱 프로그래밍 [개정 3판 마시멜로] | 황제낙엽 | 2016.11.07 | 196 |
2 | 안드로이드 강좌 (작성중) [1] | 황제낙엽 | 2015.01.26 | 210 |
1 |
Get the Android SDK + Installing the Eclipse Plugin + Android SDK setup + 안드로이드 ICS 크롬 디버깅
![]() | 황제낙엽 | 2013.10.22 | 276 |