안드로이드 왕초보 구글맵 V2 현재위치 <-> 마커 거리계산 질문 좀 드리겠습니다.


진행상황은 지도상에 현재위치를 띄어주고, 이클립스에 위도/경도를 입력하여 마커를 띄우는 것 까지 완성한 상태입니다.

궁금한 것은 현재 자신의 위치에서부터 제일 가까운 마커가 찍힌 곳과의 거리를 계산하여 결과값을 화면에 띄어주고 싶습니다.

구글링을 해보니 distance to 를 사용하여 계산하는 방법과, Google Maps Directions API를 이용하는 방법이 있는 것 같더라구요.

제가 원하는 방향으로 갈려면 어떤 방법으로 해결해야 하는지 궁금합니다.

꼭 답변 부탁드리겠습니다!

  • 2016년 05월 02일에 작성됨
    프로그래밍

조회수 647


1 답변


구글지도의 길찾기 기능을 이용해서 차량/도보 같은 옵션으로 얼마나 걸리는지를 보여주려면 Google Maps directions api를 이용하셔야 할 것 같구요. 아니면 간단히 다음 코드의 CalculationByDistance메소드를 이용하면 구할 수 있습니다.

import java.text.DecimalFormat;

class CodeRunner{
    public static void main(String[] args){
        LatLng gangnamStation = new LatLng(37.4979462,127.025427);//강남역
        LatLng shinNonhyeon = new LatLng(37.5047282,127.023186);//신논현역
        System.out.println(CalculationByDistance( gangnamStation, shinNonhyeon));

    }
    public static double CalculationByDistance(LatLng StartP, LatLng EndP) {
        int Radius = 6371;// radius of earth in Km
        double lat1 = StartP.latitude;
        double lat2 = EndP.latitude;
        double lon1 = StartP.longitude;
        double lon2 = EndP.longitude;
        double dLat = Math.toRadians(lat2 - lat1);
        double dLon = Math.toRadians(lon2 - lon1);
        double a = Math.sin(dLat / 2) * Math.sin(dLat / 2)
                + Math.cos(Math.toRadians(lat1))
                * Math.cos(Math.toRadians(lat2)) * Math.sin(dLon / 2)
                * Math.sin(dLon / 2);
        double c = 2 * Math.asin(Math.sqrt(a));
        double valueResult = Radius * c;
        double km = valueResult / 1;
        DecimalFormat newFormat = new DecimalFormat("####");
        int kmInDec = Integer.valueOf(newFormat.format(km));
        double meter = valueResult % 1000;
        int meterInDec = Integer.valueOf(newFormat.format(meter));

        return Radius * c;
    }
}

class LatLng{
    public double latitude;
    public double longitude;

    public LatLng(double lat, double lng){
        this.latitude = lat;
        this.longitude = lng;
    }
}

출처

static으로 선언되어 있지만 편한대로 사용하시면 됩니다. 코드의 LatLng클래스는 그냥 자바 환경에서 테스트해보기 위해 넣었어요.

  • 2016년 05월 02일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close