내비게이션 만들기
Updated:
현재 위치에서 지정한 위치로 도보로 갈 수 있는 길을 안내하기 위해 Tmap API를 사용하려고 했지만 자료가 충분하지 않아서 네이버 지도를 URL Scheme로 사용하기로 했다.
Flutter
url변수를 다음과 같이 설정해주고 body에 위 url을 입력해준다.
var url = "nmap://route/walk?slat=37.4640070&slng=126.9522394&sname=%EC%84%9C%EC%9A%B8%EB%8C%80%ED%95%99%EA%B5%90&dlat=37.5209436&dlng=127.1230074&dname=%EC%98%AC%EB%A6%BC%ED%94%BD%EA%B3%B5%EC%9B%90&appname=com.example.aiml_mobile_2024";
// nmap: Navermap, route/walk: 도보
// slat: type=double, 출발지 위도(31.43 ~ 44.35)
// slng: type=double, 출발지 경도(122.37 ~ 132.00)
// sname: type=string, 출발지 이름(URL 인코딩된 문자열)
// dlat
// dlng
// dname
// 중간 생략
body: Center(
child: ElevatedButton(
onPressed: () async{
await launch(url);
},
child: Text('Open URL Scheme'),
),
),
// 이후 생략
이 url변수를 API를 이용해 Get방식으로 받는것을 해보자. 또한
Spring
RestAPI
Spring 프로젝트를 생성하고 controller Package에 firstController.java를 생성한다.
package com.example.restapidemo.controller;
import com.example.restapidemo.firstService;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
@RestController
@RequiredArgsConstructor
public class firstController {
private final firstService firstService;
@GetMapping("/first")
public Map<String, Object> firstController() {
return firstService.getFirstData();
}
}
- @RestController
- @Controller에 @ResponseBody가 추가된 것이다.
- Spring Framework에서 제공하는 애노테이션으로, 이 클래스가 RESTful 웹 서비스의 엔드포인트를 처리하는 컨트롤러라고 지정한다. 이 컨트롤러는 HTTP요청과 응답을 처리하며, JSON 또는 XML과 같은 데이터 형식으로 클라이언트에게 응답을 반환한다.
- @GetMapping
- “/first” 경로에 대한 HTTP GET 요청을 처리하는 메소드로 지정한다.
- return firstService.getFirstData();
- firstService.getFirstData()를 반환
- return “Hello”;로 하면 Hello 반환
이후 java/com.example.restapidemo 디렉토리에 firstService Interface를 생성한다.
package com.example.restapidemo;
import java.util.Map;
public interface firstService {
Map<String, Object> getFirstData();
}
impl Package에 firstServiceImpl.java를 생성한다.
package com.example.restapidemo.impl;
import com.example.restapidemo.firstService;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
@Service
public class firstServiceImpl implements firstService{
@Override
public Map<String, Object> getFirstData() {
Map<String, Object> firstData = new HashMap<>();
firstData.put("label1", "check1");
firstData.put("label2", "check2");
firstData.put("label3", "check3");
return firstData;
}
}
이제 실행을 해보면 다음과 같다.
Project
이제 위 내용을 이용해서 프로젝트에 적용해본다.
댓글남기기