1. 위도와 경도 구하기 

<script>

setInterval(function(){

//현재 접속한 브라우저의 위도와 경도 출력하기 

navigator.geolocation.getCurrentPosition(function(position){

alert(position.coords.latitude);

alert(position.coords.longitude);

})

},10000)

</script>



2. ajax를 통한 요청 

<script>

setInterval(function(){

//현재 접속한 브라우저의 위도와 경도 출력하기 

navigator.geolocation.getCurrentPosition(function(position){


loc = position.coords.latitude + "-" +position.coords.longitude

//address라는 URL loc를 파라미터로 넘겨서 

//json 타입으로 데이터를 받아오는 ajax 요청 

$.ajax({

url: "",

data:{"loc":loc},

dataType:'json',

success:function(data){

alert(data);

}

});

});

},10000);

</script>



**카카오 API를 이용해서 위도와 경도를 이용해서 주소를 찾아와서 출력하기 

1. kakaoapi에 가서 api를 이용해서 위도와 경도를 이용해서주소를 찾아와서 출력하기

1.userService 인터페이스에 위도와 경도를 받아서 주소를 리턴하는 메소드를 선언 

public String address(String loc)


2. UserServiceImpl 클래스에 위도와 경도를 받아서 주소를 리턴하는 메소드를 구현 



@Override

public String address(String loc) {

String [] ar  = loc.split("-");

String addr = "https://dapi.kakao.com/v2/local/geo/coord2address.json?";

addr= addr+"x=" +ar[1] +"&y="+ar[0];

//위의 주소를 가지고 URL 객체를 생성 

try {

//위의 주소를 가지고 URL 객체를 생성 

URL url = new URL(addr);

//URL 객체를 가지고 HttpURLConnection 객체 만들기

HttpURLConnection con = (HttpURLConnection)url.openConnection();

//인증부분은 받아야 하면 api에 작성되어있습니다.

//인증받기 

con.setRequestProperty("Authorization", "카카오 api 자리");

//옵션 설정 

con.setConnectTimeout(20000);

con.setUseCaches(false);

//줄단위 데이터 읽기 

BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));

StringBuilder sb = new StringBuilder();

while(true) {

String line =br.readLine();

if(line ==null) {

break;

}

//읽은 데이터가 있으면 sb에추가 

sb.append(line);

}

br.close();

con.disconnect();

 

System.out.println(sb);

JSONObject obj = new JSONObject(sb.toString());

System.out.println(obj);

JSONArray imsi = obj.getJSONArray("documents");

System.out.println(imsi);

JSONObject o = imsi.getJSONObject(0);

System.out.println(o);

JSONObject c = o.getJSONObject("address");

String address= c.getString("address_name");

return address;

}catch (Exception e) {

System.out.println("지도보이기" + e.getMessage());

e.printStackTrace();

}

return null;

}


3. JSONController 클래스에 위도와 경도를 받아서 주소를 JSON 문자열로 출력하는 메소드를 생성 


@RequestMapping(value = "address", method = RequestMethod.GET)

public Map<String, Object> login(String loc) {

Map<String, Object> map = new HashMap<String, Object>();

// 서비스에서 주소를 가져오는 메소드 호출

String address = userService.address(loc);

map.put("address", address);


return map;

}

4.home.jsp 파일에 위도와 경도를 Controller에 넘겨서 주소를 가져와서 출력하는 자바스크립트 코드와 출력 영역을 생성

1)출력 영역 생성

<div class="box-header with-border" id="address">

</div>


2)스크립트 코드 추가

ajax success에 

document.getElementById("address").innerHTML="<h3>" + data.address + "</h3>";









String json = {"meta":{"total_count":1},"documents":

[{"road_address":{"address_name":"서울특별시 중구 세종대로 110","region_1depth_name":"서울","region_2depth_name":"중구","region_3depth_name":"","road_name":"세종대로","underground_yn":"N","main_building_no":"110","sub_building_no":"","building_name":"서울시청","zone_no":"04524"},

"address":{"address_name":"서울 중구 태평로1가 31","region_1depth_name":"서울","region_2depth_name":"중구","region_3depth_name":"태평로1가","mountain_yn":"N","main_address_no":"31","sub_address_no":"","zip_code":"100744"}}]}


JSONObject obj = new JSONObject(json);

JSONArray ar = obj.getJSONArray("documents");

JSONObject ob = ar.getJSONArray(0);

String address =ob.getString("address_name");

**Java에서 JSON 파싱 

1. 의존성 라이브러리 추가 

<!--json 파싱 라이브러리 --> 

<!-- json 파싱 라이브러리 -->

<dependency>

<groupId>org.json</groupId>

<artifactId>json</artifactId>

<version>20171018</version>

</dependency>


2.JSONObject와 JSONArray를 이용해서 문자열을 파싱하면 됩니다. 

1) 문자열을 확인하고 그문자열을 생성자에 대입해서 JSONObject나 JSONArray객체로 만듭니다. 


2) get자료형(키 이름 또는 인덱스)를 이용해서 데이터를 읽어가면 됩니다.



+ Recent posts