Naver Geocoding For Android 안드로이드 네이버 지오코딩
Android 2022. 2. 5. 23:03 |반응형
네이버 클라우드 플랫폼의 지오코딩을 사용해 보자.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
package com.example.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new Thread(new Runnable() {
@Override
public void run() {
requestGeocode();
}
}).start();
}
});
}
public void requestGeocode() {
try {
BufferedReader bufferedReader;
StringBuilder stringBuilder = new StringBuilder();
String addr = "분당구 성남대로 601";
String query = "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=" + URLEncoder.encode(addr, "UTF-8");
URL url = new URL(query);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
if (conn != null) {
conn.setConnectTimeout(5000);
conn.setReadTimeout(5000);
conn.setRequestMethod("GET");
conn.setRequestProperty("X-NCP-APIGW-API-KEY-ID", "Client ID");
conn.setRequestProperty("X-NCP-APIGW-API-KEY", "Client Secret");
conn.setDoInput(true);
int responseCode = conn.getResponseCode();
if (responseCode == 200) {
bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
} else {
bufferedReader = new BufferedReader(new InputStreamReader(conn.getErrorStream()));
}
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
//textView.setText(stringBuilder);
int indexFirst;
int indexLast;
indexFirst = stringBuilder.indexOf("\"x\":\"");
indexLast = stringBuilder.indexOf("\",\"y\":");
String x = stringBuilder.substring(indexFirst + 5, indexLast);
indexFirst = stringBuilder.indexOf("\"y\":\"");
indexLast = stringBuilder.indexOf("\",\"distance\":");
String y = stringBuilder.substring(indexFirst + 5, indexLast);
textView.setText("X: " + x + ", " + "Y: " + y);
bufferedReader.close();
conn.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
|
MainActivity.java에 위 소스를 입력하고 빌드한다. '분당구 성남대로 601'의 주소 정보를 여러가지 데이터가 포함된 JSON 포맷으로 가져와 간단한 문자열 조작으로 GPS 좌표만 추출한다.
아래와 같은 양식의 curl 명령으로도 동일한 JSON 데이터를 얻을 수 있다.
curl -G "https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=%EB%B6%84%EB%8B%B9%EA%B5%AC%20%EC%84%B1%EB%82%A8%EB%8C%80%EB%A1%9C%20601" -H "X-NCP-APIGW-API-KEY-ID: Client ID" -H "X-NCP-APIGW-API-KEY: Client Secret"
※ query에는 주소를 url encoding한 값을 대입한다.
분당구 성남대로 601 = %EB%B6%84%EB%8B%B9%EA%B5%AC%20%EC%84%B1%EB%82%A8%EB%8C%80%EB%A1%9C%20601
아래와 같은 양식으로 웹브라우저 주소창에 입력해도 동일한 JSON 데이터를 얻을 수 있다.
https://naveropenapi.apigw.ntruss.com/map-geocode/v2/geocode?query=분당구 성남대로 601&X-NCP-APIGW-API-KEY-ID=[Client ID]&X-NCP-APIGW-API-KEY=[Client Secret]
반응형
'Android' 카테고리의 다른 글
Linux(Ubuntu) Database Server with PHP For Android App - 안드로이드 앱을 위한 리눅스(우분투) 데이터베이스 서버 (0) | 2022.02.09 |
---|---|
Naver Reverse Geocoding For Android 안드로이드 네이버 리버스 지오코딩 (0) | 2022.02.06 |
Naver Mobile Dynamic Map For Android 안드로이드 네이버 모바일 다이나믹 맵 2 (0) | 2022.02.05 |
Naver Mobile Dynamic Map For Android 안드로이드 네이버 모바일 다이나믹 맵 1 (0) | 2022.02.05 |
AdMob Mobile Ads SDK (Android) 애드몹 광고 SDK (안드로이드) (0) | 2022.01.31 |