Programing

Google지도 v3 드래그 가능한 마커

crosscheck 2020. 12. 7. 07:50
반응형

Google지도 v3 드래그 가능한 마커


저는 Google지도가 처음이며 배우려고 노력하고 있습니다.

marker = new google.maps.Marker(
{
     map:map,
     draggable:true,
     animation: google.maps.Animation.DROP,
     position: results[0].geometry.location
});

이것은 내가 장소 이름 (예 : XY street, New York)을 아는 것보다 마커 위치를 초기화 할 때 내 마커 위치이지만 드래그 가능한 옵션으로 인해 변경되고 있으며 내 질문은 새로운 장소 이름, 어떤 이벤트 핸들러가 필요한가요?


마침내 나는 답을 찾았습니다.

marker = new google.maps.Marker(
{
    map:map,
    draggable:true,
    animation: google.maps.Animation.DROP,
    position: results[0].geometry.location
});
google.maps.event.addListener(marker, 'dragend', function() 
{
    geocodePosition(marker.getPosition());
});

function geocodePosition(pos) 
{
   geocoder = new google.maps.Geocoder();
   geocoder.geocode
    ({
        latLng: pos
    }, 
        function(results, status) 
        {
            if (status == google.maps.GeocoderStatus.OK) 
            {
                $("#mapSearchInput").val(results[0].formatted_address);
                $("#mapErrorMsg").hide(100);
            } 
            else 
            {
                $("#mapErrorMsg").html('Cannot determine address at this location.'+status).show(100);
            }
        }
    );
}

위도 / 언어를 사용하여지도에 위치를 설정하고 마커를 드래그 할 수 있도록 설정

  • lat / lang을 사용하면 처음에지도의 지정된 지점에 마커가 설정됩니다.

  • 주소 변수는 제목 용도로 사용됩니다. 무시할 수 있습니다.

  • draggable : true 는 마커를 드래그 가능하게 만듭니다.

  • 이벤트 리스너 사용 google.maps.event.addListener (marker, 'dragend', function (marker) 마커 위치의 변경을 수신하려면

    function showMap(lat,lang,address) {
    var myLatLng = {lat: lat, lng: lang};
    
        var map = new google.maps.Map(document.getElementById('map_canvas'), {
          zoom: 17,
          center: myLatLng
        });
    
        var marker = new google.maps.Marker({
          position: myLatLng,
          map: map,
          title: address,
          draggable:true,
        });
    
        google.maps.event.addListener(marker, 'dragend', function(marker){
            var latLng = marker.latLng; 
            currentLatitude = latLng.lat();
            currentLongitude = latLng.lng();
            jQ("#latitude").val(currentLatitude);
            jQ("#longitude").val(currentLongitude);
         }); 
    }
    

Here is the code which gets drag-able marker with position in text box:

/**
 *Receiving the value of text box and type done conversion by Number() 
 */
var latitude = Number(document.getElementById("la").value);
var longitude = Number(document.getElementById("lo").value);

function initMap() {
  /**
   *Passing the value of variable received from text box
   **/
  var uluru = {
    lat: latitude,
    lng: longitude
  };
  var map = new google.maps.Map(document.getElementById('map'), {
    zoom: 7,
    center: uluru
  });
  marker = new google.maps.Marker({
    map: map,
    draggable: true,
    animation: google.maps.Animation.DROP,
    position: uluru
  });
  google.maps.event.addListener(marker, 'dragend',
    function(marker) {
      var latLng = marker.latLng;
      currentLatitude = latLng.lat();
      currentLongitude = latLng.lng();
      $("#la").val(currentLatitude);
      $("#lo").val(currentLongitude);
    }
  );
}
#map {
  height: 400px;
  width: 100%;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="map"></div>
Latitude <input type="text" id="la" name="latitude" value="28.39"> Longitude<input type="text" id="lo" name="longitude" value="84.12">

<!--Google Map API Link-->
<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOURAPIKEYHERE&callback=initMap">

Please Use jQuery at the head

참고URL : https://stackoverflow.com/questions/5688745/google-maps-v3-draggable-marker

반응형