구글 맵만 표시하고, 사용자가 원하는 위치를 확인하려면, 터치 좌표를 확인하는 것이 필 수 인데요. 그것을 사용하려면, 구글 맵 공식 문서의 events 페이지를 보면 됩니다. 설명과 시각적인 표시가 잘되어 배우기 쉽지만, 모든 이벤트가 들어 있어 필요한 부분만 골라써야 합니다. 어렵지는 않습니다. 일단 구글 맵 표시 부분을 먼저 보시고 숙지하시는 것이 좋을 것 같습니다. 그래야, 필요한 코드가 어떤 것인지 쉽게 확인할 수 있습니다.

 

[공식문서]

Google Mpas Platform Map > javascript Overview : https://developers.google.com/maps/documentation/javascript/tutorial .
Google Mpas Platform Map > javascript Events : https://developers.google.com/maps/documentation/javascript/events .
Google Mpas Platform Map > javascript Reverse Geocoding : https://developers.google.com/maps/documentation/javascript/examples/geocoding-reverse .

 

[선행작업]

구글 지도 표시 : https://nicgoon.tistory.com/240 .

 

 

1. 사용 이벤트들 확인하기.

Event 공식 문서를 보면, 발생하는 이벤트를 시각적으로 표시해 주는 뷰가 하나 있습니다. 여기서 확인해 원하는 이벤트를 받아 주면 되겠습니다.

 

2. 클릭 이벤트 적용.

클릭 이벤트 리스너를 사용하면 됩니다. 처음 맵이 생성되면 콜백을 받는 메소드가 있습니다. 공식문서에는 initMap() 메소드인데, api키와 함께 지정할 수 있는데, 굳이 바꿀필요가 없어 대체로 저 이름으로 되어 있을 것 입니다. 이 속에 아래와 같이 이벤트를 걸어 주면됩니다.

  map.addListener('click', function(e) {
	// 여기에 맵의 클릭 이벤트를 넣어 줍니다.
  });

 

위경도 좌표는 다음 과 같이 볼 수 있습니다.

map.addListener('click', function(e) {

  console.log( e.latLng );

});

 

 

3. 받은 위경도 좌표를 우리가 인식할 수 있는 주소로 변환하기.

가이드를 이용해 만들 수 있고, 구글에서는 이 상황에 대비해 샘플로 공개 해 두었습니다. 위에 걸어 놓은 공식 문서 Google Mpas Platform Map > javascript Reverse Geocoding 의 내용을 보시면 되겠습니다.

 

먼저 geo 코드를 가지고 옵니다.

var geocoder = new google.maps.Geocoder;

 

그리고, 받은 위경도 좌표를 다음과 같이 요청할 수 있는 데이터로 변경합니다.

var latlng = {
  lat: e.latLng.lat(),
  lng: e.latLng.lng()
};

 

그리고, 주소는 다음과 같이 확이할 수 있습니다.

geocoder.geocode({'location': latlng}, function(results, status) {

  if( status === "OK" )
  {
    // console.log( results );
    alert( JSON.stringify( results ) );
  }else{
    alert("주소를 못 가지고 왔습니다. 사람 사는 곳이 아닌 것 같습니다.");
  }

});

 

 

 

4 전체 코드 보기.

전체 코드는 모두 초기 콜백 메소드인 initMap() 속에 다 넣을 수 있었고, 이 메소드만 보여 드립니다. 크게 어려움 없이 동작할 것 입니다.

    <script>
      var map;
      function initMap() {

        // 맵의 초기 위치 지정.
        map = new google.maps.Map(document.getElementById('map'), {
          center: {lat: -34.397, lng: 150.644},
          zoom: 8
        });


        // 각 값들을 가지고 옵니다.
        var geocoder = new google.maps.Geocoder;


        // 클릭한 위치 확인.
        map.addListener('click', function(e) {
          // alert(e.latLng.lat());

          console.log( e );


          // 위경도 좌표를 요창할 객체를 만들어 줍니다.
          var latlng = {
            lat: e.latLng.lat(),
            lng: e.latLng.lng()
          };

          console.log( latlng );



          geocoder.geocode({'location': latlng}, function(results, status) {

            if( status === "OK" )
            {
              // console.log( results );
              alert( JSON.stringify( results ) );
            }else{
              alert("주소를 못 가지고 왔습니다. 사람 사는 곳이 아닌 것 같습니다.");
            }

          });



        });

        // 클릭한 좌표를 주소 형태로 변환.



      }
    </script>

 

 

 

 

 

 

 

 

 

 

 

'솔루션 > google Maps Platform' 카테고리의 다른 글

구글 맵 표시 ( javascript 이용)  (0) 2019.06.16
Posted by 창업닉군
,

웹페이지에 맵을 넣을 일이 있어, 구글맵을 적용하고, 잊지 않기 위해 글을 남겨 둡니다.

 

[공식문서]

Maps JavaScript API : https://developers.google.com/maps/documentation/javascript/tutorial .

 

[참고 사이트]

Google Maps Platform : https://cloud.google.com/maps-platform .

 

 

1. API키 받기.

먼저 구글 지도 플랫폼으로 들어 갑니다. 그리고 오른쪽 상단의 시작하기 버튼을 눌러 줍니다.

 

그리고 사용할 지도 플랫폼을 지정합니다. 일단 지도만 있으면 될것 같지만, 지역정보도 함께 선택해 둡니다.

 

그리고 새로운 프로젝트를 생성합니다. (기존의 프로젝트도 사용해도 상관은 없습니다.)

 

여기까지 들어 오면, 생성한 프로젝트에 결제 사용을 설정할 수 있습니다. 결제 계정을 만들어 줍니다.

 

결제계정을 지정하였다면 아래와 같이 프로젝트가 설정되고, 지도 사용을 위한 API 키가 나옵니다.

 

2. 소스 작성.

소스 작성은 공식 문서 Maps JavaScript API 에 있는 코드를 그대로 복사해 사용하면 됩니다.api키만 바꾸시면됩니다.

<!DOCTYPE html>
<html>
  <head>
    <title>Simple Map</title>
    <meta name="viewport" content="initial-scale=1.0">
    <meta charset="utf-8">
    <style>
      /* Always set the map height explicitly to define the size of the div
       * element that contains the map. */
      #map {
        height: 100%;
      }
      /* Optional: Makes the sample page fill the window. */
      html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
    </style>
  </head>
  <body>
    <div id="map"></div>
    <script>
      var map;
      function initMap() {
        map = new google.maps.Map(document.getElementById('map'), {
          center: {lat: -34.397, lng: 150.644},
          zoom: 8
        });
      }
    </script>
    <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap"
    async defer></script>
  </body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Posted by 창업닉군
,

맥에서 코르도바 안드로이드 플랫폼 구축하기.

코르도바는 모든 플랫폼에서 동작하는 앱을 만들어주는 개발언어 이므로, 각 개발을 원하는 플랫폼을 따로 구축해 주어야 한다.

공식문서 : https://cordova.apache.org/docs/ko/9.x/guide/platforms/android/index.html

 

1. 선행작업.
   실행을 위해서는 아래 2가지 작업이 선행되어야 한다.
   코르도바 설치 : https://nicgoon.tistory.com/186
   첫앱생성 : https://nicgoon.tistory.com/187

 

2. java 설치.
   환경 변수 문제로 인해 코르도바 트러블이 생길 수 있다. 최신 버전인 java 11 버전을 설치한다면, 코르도바는 java가 설치되지 않은 것으로 인식한다. 당연히 문제가 발생한다. 그러므로, 8 버전을 설치한다. (한국 번역본은 보지 않도록 한다.)

설치공식사이트 : https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

 

3. 안드로이드 스튜디오를 설치하면 Gradel이 자동으로 설치된다 하지만, 이 버전이 매우 낮다. 코르도바는 5.x때의 gradle을 사용하므로, 직접 설치를 해 주어야 한다.

설치메뉴얼 : https://gradle.org/install/

여기서 우리는 installing manually 항목대로 설치를 할 것 이다.
다운로드 페이지에서  binary-only나 complete를 다운로드 받으면된다. 맥 같은 경우 다운로드를 받으면, 바로 압축이 풀어 지므로, 그대로 지정한 폴더로 복사하면된겠다.

복사할 위치 : /opt/gradle

설치메뉴얼 처럼 한 번에 폴더가 생성되지 않는다, 대체로 아래처럼 입력하면 무난하다. (그냥 파인더로 생성해도 상관없습니다.)

$ sudo mkdir /opt
$ sudo mkdir /opt/gradle

그냥 파인터를 이용해 데이터를 복제하자.

환경변수는 아래와 같이 등록합니다.

$ export PATH=$PATH:/opt/gradle/gradle-5.3.1/bin

위의 방법이 메뉴얼에 나와 있는 방법인데, 터미널을 다시켜면 환경변수가 지워졌습니다.
이것을 해결하기 위해, 유저 홈디렉토리 (cd ~로 이동할 수있는), 폴더를 파인더로 찾아가 Shift + command + . 을 동시에 눌러 감춰진 파일들이 표시되도록 하였습니다.
여기서 .bash_profile 파일을 편집기(저는 vs code를 이용했습니다.)를 열어 위의 패스를 걸어 줍니다.

 

4. 안드로이드 스튜디오, 설치.
   안드로이드 설치하는 아래 사이트에 가면 자동으로 시작이된다.
   https://developer.android.com/studio/install?hl=ko

   안드로이드 스듀이로를 열어 tools > SDK Manager를 열어 다음 사항을 확인해 줍니다.
   1) Android Platform SDK 안드로이드 버전을 확인합니다.
   2) Android SDK build-tools 19 이상 혹은 최상위 버전.
   3) 안드로이드 SDK가 설치된 경로, (이것을 알아야 패스를 거어 줄수 있습니다.) 

   환경변수 설정해 주기.
   이것을 해 줘야 코르도바에서 안드로이드 관련 소스들을 찾을 수 있다. gradle 환경 변수를 설정했던 요령으로, 안드로이드를 위한 환경변수를 같은 파일에 추가해 줍니다.

   export ANDROID_HOME=안드로이드 sdk
   export PATH=$PATH:안드로이드 sdk/platform-tools:안드로이드 sdk/tools

 

 

5. 플랫폼 추가.

프로젝트를 생성해, 해당 폴더로 이동합니다.

$ sudo cordova create hello com.exaple.hello helloworld
$ cd hello

플랫폼을 추가해 줍니다.

$ sudo cordova platform add android

 추가된 플랫폼을 확인해 줍니다.

$ cordova platform ls

 

6. 빌드

모든 플랫폼 빌드.
$ sudo cordova build

안드로이드만 빌드.
$ sudo cordova build android

 

7. 테스트

$ sudo cordova emulate android

빌드 자체는 정말 잘된다 문제는 설정이 까다롭다는 것인데, 다행이 오류 코드를 자 뱉어 주므로, 이를 해결해 나가면 크게 문제가 없다.

 

8. 테스트가 되지 않을 때,

$ adb kill-server
$ adb start-server

위 두 명령을 차례로 쓴다면, adb가 차례로 재 시작된다. 그리고, 아래 명령을 통해 확인해 보면, 장치가 인증되지 않았다고 나올 것이다.
개발자 모드를 활성화 한 뒤, usb를 뺏다 꽂으면 문제가 해결이 된다.

$ adb devices

Posted by 창업닉군
,