구글지도 최신글 뽑아오는것에 대하여 보충 질문드립니다.

구글지도 최신글 뽑아오는것에 대하여 보충 질문드립니다.

QA

구글지도 최신글 뽑아오는것에 대하여 보충 질문드립니다.

본문

아래 구글지도 최신글 뽑아오는 질문에 대하여 설명이 부족한것 같아 다시 글 올립니다. ㅠㅠ
 
답변 꼭 부탁드릴께요..ㅠㅠ
 
구글지도에 표기된것을 최신글로 뽑아오는 스킨을 사용하고 있습니다. (아빠사랑님 제작 스킨입니다.)


위의 스킨 내용을 살짝 바꾸어 봤습니다.

<script src="https://maps.googleapis.com/maps/api/js?sensor=false&language=ko"></script> 
<script type="text/javascript">
var pointicon = {url:'<?php G5_URL ?>/img/yeicon_map001.gif',
};
var yeLatlng = new google.maps.LatLng(37.549205,126.999207);
var yemapOptions = {
zoom: 10,
center: yeLatlng,
mapTypeControl: true,
    mapTypeControlOptions: {
      style: google.maps.MapTypeControlStyle.DEFAULT
    },
    zoomControl: true,
    zoomControlOptions: {
      style: google.maps.ZoomControlStyle.DEFAULT
    },
mapTypeId: google.maps.MapTypeId.ROADMAP
};
    var map = new google.maps.Map(document.getElementById('yemap'), yemapOptions);
    var geocoder = new google.maps.Geocoder();
var infowindow = new google.maps.InfoWindow({ maxWidth: 400 });
var mathaenge;
<?php for ($i=0; $i<count($list); $i++) {
$name1=strip_tags($list[$i]['wr_subject']);
$url="<a href={$list[$i][href]}><b>$name1</b></a>";
$address=$list[$i]['wr_6'];
?>
geocoder.geocode( { 'address': '<?php echo $address;?>'}, function(results, status) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
             position: results[0].geometry.location,
             map: map,
icon: pointicon
});
google.maps.event.addListener(marker, 'click', (function(marker, mathaenge){
return function() {
infowindow.setContent('<?php echo $url;?>');
infowindow.open(map, marker);
}
})(marker, mathaenge));
        });
<? } ?>
</script>

위 내용으로 최신글을 만들어 놓았습니다.
 
해당 게시판의 구글 지도 주소를 wr_6 으로 입력되게 하였고 그 값을 최신글로 불러오도록 하고 싶었습니다.
 
해당 게시판의 구글 지도 입력 코드 입니다. (주소입력부분은 해피정님의 팁을 활용하였습니다.)
 
위의 내용대로 게시판에서 내용을 작성하고 메인에서 최신글을 뽑으면..
 
잘 나옵니다.
 
여기서 질문드려요..ㅠㅠ
 
최신글로 뽑아오는 개수가 11개가 넘어가면..(11개까지는 오류가 안나고 잘 나옵니다.) 12개째부터 오류가 발생합니다.
 
=> 메시지: '0'은(는) null 이거나 개체가 아닙니다.
 
또한 12개 이상은 출력되지 않습니다.
 
이유가 무엇일까요..ㅠㅠ
 
갔다가 붙여쓰는 재주밖에 없고..공부가 부족한지라..무엇이 잘못된지 모르겠습니다.
 
게시판에서 잘 입력되었고..DB쪽에도 값이 잘 입력된것을 확인하였고..
 
최신글 화면에서 소스를 보면..소스상에서는 순서대로 잘 나타나있는데..
 
화면에서는 오류발생과 11개까지 마커가 출력되지 않으니 답답합니다.ㅠㅠ
 
인터넷 검색, 그누보드 게시판 다 뒤져 보았지만 그래도 모르겠습니다. ㅠㅠ 
 
답변 부탁드리겠습니다.

이 질문에 댓글 쓰기 :

답변 2

해당게시판의 주소입력 해당 코드입니다. (내용에 첨부가 다 안되서 댓글로 남깁니다.;;)
 


            <!--지도-->
            <?php
            if ($write['wr_9']=='') $write['wr_9']='37.566535';
            if ($write['wr_10']=='') $write['wr_10']='126.977969';
            ?>
            <script src="https://maps.googleapis.com/maps/api/js?sensor=false&language=ko"></script> 
            <script type="text/javascript">
            // 구글지도
              var map;
              var geocoder;
              var centerChangedLast;
              var reverseGeocodedLast;
              var currentReverseGeocodeResponse;
            
            function addLoadEvent(func) {
                    var oldonload = window.onload;
                    if (typeof window.onload != 'function') {
                        window.onload = func;
                    } else {
                        window.onload = function() {
                            if (oldonload) {
                                oldonload();
                            }
                            func();
                        }
                    }
                }
              function initialize() {
                var latlng = new google.maps.LatLng(<?php echo $write['wr_9']?>,<?php echo $write['wr_10']?>);
                var myOptions = {
                  zoom: 12,
                  scaleControl: true,
                  center: latlng,
                  mapTypeId: google.maps.MapTypeId.ROADMAP
                };
                map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
                geocoder = new google.maps.Geocoder();
             
                // 리스너 Listener ////////////////////////////////////////////////////
                google.maps.event.addListener(map, 'zoom_changed', function() {
                    document.getElementById("zoom_level").innerHTML = map.getZoom();
            
                    zoomLevel = map.getZoom(); 
                    if (zoomLevel > 19) { 
                      map.setZoom(19); 
                    }   
                    if (zoomLevel < 1) { 
                      map.setZoom(1); 
                    }   
                });
            
                setupEvents();
                centerChanged();
              }
             
              function setupEvents() {
                reverseGeocodedLast = new Date();
                centerChangedLast = new Date();
             
                setInterval(function() {
                  if((new Date()).getSeconds() - centerChangedLast.getSeconds() > 1) {
                    if(reverseGeocodedLast.getTime() < centerChangedLast.getTime())
                      reverseGeocode();
                  }
                }, 1000);
             
                google.maps.event.addListener(map, 'center_changed', centerChanged);
             
                google.maps.event.addDomListener(document.getElementById('crosshair'),'dblclick', function() {
                   map.setZoom(map.getZoom() + 1);
                });
             
              }
             
              function getCenterLatLngText() {
             
                var nn = 1000000;
                var tmpLat = Math.round(map.getCenter().lat()*nn)/nn;
                var tmpLng = Math.round(map.getCenter().lng()*nn)/nn;
             
                document.fwrite.wr_9.value = tmpLat;
                document.fwrite.wr_10.value = tmpLng;
            
                return tmpLat +', '+ tmpLng;
              }
             
              function centerChanged() {
                centerChangedLast = new Date();
                var latlng = getCenterLatLngText();
                    var loc = latlng.split(','); 
                    geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
                document.getElementById('latlng').innerHTML = latlng;
                document.getElementById('formatedAddress').innerHTML = '';
                    currentReverseGeocodeResponse = null;
                }
             
              function reverseGeocode() {
                reverseGeocodedLast = new Date();
                geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
              }
             
              function reverseGeocodeResult(results, status) {
                currentReverseGeocodeResponse = results;
                if(status == 'OK') {
                  if(results.length == 0) {
                    document.getElementById('formatedAddress').innerHTML = 'None';
                  } else {
                    document.getElementById('formatedAddress').innerHTML = results[0].formatted_address;
                  }
                } else {
                  document.getElementById('formatedAddress').innerHTML = 'Error';
                }
              }
             
              function geocode() {
                var address = document.getElementById("address").value;
                geocoder.geocode({
                  'address': address,
                  'partialmatch': true}, geocodeResult);
              }
             
              function geocodeResult(results, status) {
                if (status == 'OK' && results.length > 0) {
                  map.fitBounds(results[0].geometry.viewport);
                } else {
                  alert("Info: " + status);
                }
              }
            
            </script>
            
              Find Place: <input type="text" id="address" size="40" onKeyDown="if(event.keyCode==13){geocode();}" class="frm_input" />
               <input type="button" style = "cursor: pointer;" value=" Go " onclick="geocode()" class="frm_input">
            
              <div id="map">
                <div id="map_canvas" style="width:593px; height:300px;"></div>
                <div id="crosshair"></div>
              </div>
             
            <script type="text/javascript"> 
                addLoadEvent(initialize);
            </script>
              <table>
                <tr><td>Lat/Lng:</td><td><div id="latlng"></div></td></tr>
                <tr><td>Address:</td><td><div id="formatedAddress"></div></td></tr>
                <tr><td>Zoom:</td><td><div id="zoom_level">12</div></td></tr>
              </table>
자문자답입니다.
 
맞는지는 확실치 않으나, 아래 방법으로 해결했습니다.
 
지오코딩 자체가 요청수가 한번에 10개까지만 받아들인다고 합니다.
 
정확한건 아니나, 위도,경도를 직접 변수에 넣으니..
 
잘 나오게 됩니다. 참고하시길 바랍니다~
답변을 작성하시기 전에 로그인 해주세요.
전체 123,677 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT