반응형

WGS84GEO 좌표를 Google polyline format으로 encoding 하고 decoding 해야 할 일이 생겼다.

 

https://developers.google.com/maps/documentation/utilities/polylinealgorithm

 

Encoded Polyline Algorithm Format  |  Google Maps Platform  |  Google Developers

Points: (38.5, -120.2), (40.7, -120.95), (43.252, -126.453) 38.5 -120.2 3850000 -12020000 +3850000 -12020000 _p~iF ~ps|U _p~iF~ps|U 40.7 -120.95 4070000 -12095000 +220000 -75000 _ulL nnqC _ulLnnqC 43.252 -126.453 4325200 -12645300 +255200 -550300 _mqN vxq`

developers.google.com

위의 url을 통해 들어가 보면 google polyline format을 인코딩하고 디코딩하는 방법에 대한 설명이 나와있다.

직접 소스를 작성해서 2진수를 변환하고 여러가지 과정을 통해서 변환이 가능하다.

 

하지만 Maven 이나 Gradle 을 사용중이라면 간단한 방법이 있다.

 

Maven 을 사용중이라면 pom.xml 에 아래와 같이 넣어주면된다.

(글 작성 당시 버전은 1.0.1이 최신이었음)

<dependency>
    <groupId>com.google.maps</groupId>
    <artifactId>google-maps-services</artifactId>
    <version>1.0.1</version>
</dependency>
<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.5</version>
</dependency>

Java 소스 예제로는 아래와 같이 간단하게 사용이 가능하다.

package com.polyline.controller;

import java.util.ArrayList;
import java.util.List;

import com.google.maps.internal.PolylineEncoding;
import com.google.maps.model.LatLng;

public class PolylineTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		List<LatLng> coordList = new ArrayList<>();
		coordList.add(new LatLng(37.5655932,126.9884135));
		coordList.add(new LatLng(37.56530712,126.9884219));
		String encodeTxt =  PolylineEncoding.encode(coordList);
		
		System.out.println(encodeTxt);
	}

}

List에 좌표를 담아서 PolylineEncoding.encode 함수를 통해 google polyline format으로 변환된 것이 확인가능하다.

 

반대로 decode를 실행하고 싶은경우 PolylineEncoding.decode 함수를 사용하면된다.

decode 함수를 사용하면 encode 할 때 사용했던 List 형태로 반환이 된다. 

여기에서 decode 예제는 생략한다.

반응형

+ Recent posts