gmap.ejs 3.75 KB
<!DOCTYPE html>
<html>
  <head>
    <title>Geocoding Service</title>
    <script src="https://polyfill.io/v3/polyfill.min.js?features=default"></script>
    <style type="text/css">
      #map {
        height: 50%;
      }

      html,
      body {
        height: 100%;
        margin: 0;
        padding: 0;
      }

      #floating-panel {
        position: absolute;
        top: 425px;
        left: 25%;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
        text-align: center;
        font-family: "Roboto", "sans-serif";
        line-height: 30px;
        padding-left: 10px;
      }

      .button-wrapper{
        display: inline-block;
        border: none;
      }

      .button {
        background: #fff;
        border: none;
        padding: 2px;
        cursor: pointer;
        display: block;
        position: relative;
        overflow: hidden;
        transition: all .35s ease-in-out .35s;
          margin: 0 auto;
          width: 120px;
          text-align: center; 
      }

      .button:hover{
        background: #36B4C7;
        color: #fff;
        transition: all .35s ease-in-out .35s;
      }
      .button:after {
        bottom: -100%;
        right: -100%;
        content: "";
        width: 100%;
        height: 100%;
        position: absolute;
        background: #36B4C7;
        transition: all .35s ease-in-out .5s;
      }
      .button:hover:after {
        right: 0;
        bottom: 0;
        transition: all ease-in-out .35s;
      }
      .button:before {
        top: -100%;
        left: -100%;
        content: "";
        width: 100%;
        height: 100%;
        position: absolute;
        background: #36B4C7;
        transition: all .35s ease-in-out .5s;
      }
      .button:hover:before {
        left: 0;
        top: 0;
        transition: all ease-in-out .35s;
      }
    </style>
    <script>
      // initMap은 처음 map을 켰을 때 화면을 생성하는 함수.
      function initMap() {
        const map = new google.maps.Map(document.getElementById("map"), {
          zoom: 8,
          center: { lat: 37.33, lng: 126.58 },
        });
      
        const geocoder = new google.maps.Geocoder();
        document.getElementById("submit").addEventListener("click", () => {
          map.setZoom(15);
          geocodeAddress(geocoder, map);
          
        });
      }
      // geocodeAddress는 주소를 처리하고, marker를 생성하는 함수이다.
      function geocodeAddress(geocoder, resultsMap) {
        const address = document.getElementById("address").value;
        geocoder.geocode({ address: address }, (results, status) => {
          if (status === "OK") {
            resultsMap.setCenter(results[0].geometry.location);
            new google.maps.Marker({
              map: resultsMap,
              position: results[0].geometry.location,
              draggable : false
            });
          } else {
            alert(
              "Geocode was not successful for the following reason: " + status
            );
          }
        });
      }
    </script>
  </head>
  <body>
    <div id="floating-panel">
      <div class="light-button button-wrapper">
        <input class="button" id="submit" type="button" value="Find Location"/>
      </div>
      
    </div>
    <div class="container mb-3" id="map"></div>

    <!-- <div id="floating-panel">
      <input id="submit" type="button" value="Find Location" />
    </div>
    <div id="map" class="container mb-3"></div> -->

    <!-- Async script executes immediately and must be after any DOM elements used in callback. -->
    <script
      src="https://maps.googleapis.com/maps/api/js?key=googlekey값을 입력하세요&callback=initMap&libraries=&v=weekly"
      async
    ></script>
  </body>
</html>