클릭 시 마커의 주소 출력하기

var marker = new daum.maps.Marker({ 

    position: map.getCenter() 
}); 

marker.setMap(map);



daum.maps.event.addListener(map, 'click', function(mouseEvent) {        
    

    var latlng = mouseEvent.latLng; 
    

    marker.setPosition(latlng);
    
    _**var message = '냥이가 있는 곳의 위도는 ' + latlng.getLat() + ' 이고, ';**_
_**    message += '경도는 ' + latlng.getLng() + ' 입니다';**_
    
    var resultDiv = document.getElementById('clickLatlng'); 
    resultDiv.innerHTML = message;
})

위 코드에서 위도와 경도로 주소를 얻어 위도와 경도 대신 주소를 출력할 수는 없을까요? (표시된 부분처럼)

이 예제를 참고하세요.
http://apis.map.daum.net/web/sample/coord2addr/

라이브러리를 사용하는 방식도 확인하세요.
http://apis.map.daum.net/web/guide/#loadlibrary

1개의 좋아요

var mapContainer = document.getElementById(‘map’), // 지도를 표시할 div
mapOption = {
center: new daum.maps.LatLng(37.3614483, 127.1114883), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};

var map = new daum.maps.Map(mapContainer, mapOption); // 지도를 생성합니다
var marker = new daum.maps.Marker({

position: map.getCenter() 

});

marker.setMap(map);

daum.maps.event.addListener(map, ‘click’, function(mouseEvent) {

var latlng = mouseEvent.latLng; 


marker.setPosition(latlng);




var resultDiv = document.getElementById('clickLatlng'); 


var geocoder = new daum.maps.services.Geocoder();

var coord = new daum.maps.LatLng(latlng.getLat(), latlng.getLng());
var callback = function(result, status) {
    if (status === daum.maps.services.Status.OK) {
    	message=console.log('그런 너를 마주칠까 ' + result[0].address.address_name + '을 못가');
    }
};

geocoder.coord2Address(coord.getLng(), coord.getLat(), callback);

resultDiv.innerHTML = message;

라이브러리 참고하여 이렇게 코드를 수정하였는데 지도 자체가 뜨지 않습니다. 왜일까요?

수정 전 코드에서 지도가 떴었다면

지도 엘리먼트의 id값이 map인지 다시 확인해주세요.

id 값은 map입니다. 아래 코드가 맞나요?
var mapContainer = document.getElementById(‘map’), // 지도를 표시할 div
mapOption = {
center: new daum.maps.LatLng(37.3614483, 127.1114883), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};

그리고 수정 전 코드에서 떴었는데 갑자기 뜨지 않습니다. (수정 전 코드로 돌렸을 경우)

일단 첨부해주신 코드가 온전하지 않습니다.
위 코드를 그대로 사용하셨다면 문법오류 때문에 안나오는게 맞고요.

예제에는 click 이벤트 내부에서 geocoder를 생성하고 있지 않습니다.
이벤트 핸들러 밖에서 한 번만 만들어 주고
클릭 이벤트 내부에서 생성된 geocoder를 계속 재사용하고 있어요.
이 부분도 수정하셔야 될 것 같습니다.

var mapContainer = document.getElementById('map'), // 지도를 표시할 div mapOption = { center: new daum.maps.LatLng(37.3614483, 127.1114883), // 지도의 중심좌표 level: 3 // 지도의 확대 레벨 }; var map = new daum.maps.Map(mapContainer, mapOption); // 지도를 생성합니다 ///////////////////////////////////////////////////////////////////////////// //이전 고양이들 var imageSrc = "http://localhost:8080/CatLover/img/한국 지도.gif", // 마커이미지의 주소입니다 imageSize = new daum.maps.Size(64, 69), // 마커이미지의 크기입니다 imageOption = {offset: new daum.maps.Point(27, 69)}; var markerImage = new daum.maps.MarkerImage(imageSrc, imageSize, imageOption); var position1 = new daum.maps.LatLng(37.3614483, 127.1114883); var marker1 = new daum.maps.Marker({ position: position1, image: markerImage, clickable: true }); marker1.setMap(map); var iwContent = '
Hello World!
', iwRemoveable = true; var infowindow = new daum.maps.InfoWindow({ content : iwContent, removable : iwRemoveable }); daum.maps.event.addListener(marker1, 'click', function() { infowindow.open(map, marker1); }); ///////////////////////////////////////////////////////////////////////////// //새로운 고양이 var marker = new daum.maps.Marker({ position: map.getCenter() }); marker.setMap(map); daum.maps.event.addListener(map, 'click', function(mouseEvent) { var latlng = mouseEvent.latLng; marker.setPosition(latlng); var message = '냥이가 있는 곳의 위도는 ' + latlng.getLat() + ' 이고, '; message += '경도는 ' + latlng.getLng() + ' 입니다'; var resultDiv = document.getElementById('clickLatlng'); resultDiv.innerHTML = message; }); 이게 수정 전 코드입니다. 이 코드는 잘 떴었는데 왜 갑자기 뜨지 않는 걸까요? 문제는 다른 pc에서는 뜨고 제 pc에서만 뜨지 않습니다. 서버, 와이파이 등 환경 등은 모두 똑같구요. 답변 정말 감사드립니다. ㅠㅠ

추가로 제 코드가 아닌 예제 샘플 코드도 지도가 뜨지 않고 있습니다. ㅠㅠ

다른 컴퓨터에서 뜨는거면…
그냥 환경문제 같습니다.

브라우저 플러그인을 추가로 설치하신게 있다거나
ad blocker가 스크립트를 블락하는 경우도 생각해볼 수 있고요.
도메인등록을 안한 주소로 접근해서 안나올 수 있습니다. (ex. localhost)

근데 아무리 증상을 써주셔도
개발자 도구에 뜨는 에러메세지를 첨부해 주시는것 보다 못합니다.
코드를 봐도 이상이 없다면 계속 추측밖에 못하니까요.

답변 정말 감사드립니다.