| 이전 주제 보기 :: 다음 주제 보기 |
| 글쓴이 |
메시지 |
diffthink
가입: 2009년 10월 28일 올린 글: 2
|
올려짐: 수 10월 28, 2009 2:52 pm 주제: 주기적으로 Map을 호출할 때, 오류가 나는 현 |
|
|
현재 이동 타겟을 매초(또는 2초)마다 지도상에서 위치 표시를 해 주는 웹코딩을 하고 있습니다. 처음에 약20여초 정도는 잘 작동하다가, 더 이상 javascirpt 에서
map = new DMap(...)과 같은 구문을 수행할 수 없습니다.
에러 number값은 -21472024809 값입니다.
혹시, 하나의 session이 계속 주기적으로 호출을 시도하면
map 객체 생성을 막도록 되어 있나요?
웹창을 다시 불러서 시도하면 똑같이 좀 되다가 안되는 현상을 반복하네요. |
|
| 위로 |
|
 |
tadoli Site Admin
가입: 2008년 9월 4일 올린 글: 371
|
올려짐: 금 10월 30, 2009 11:18 am 주제: |
|
|
음.. 문제가 발생하는 소스코드를 보여주실 수 있으신가요?
직접 코드를 봐야 어떤 문제인지 알 수 있을 듯 하네요. |
|
| 위로 |
|
 |
diffthink
가입: 2009년 10월 28일 올린 글: 2
|
올려짐: 금 10월 30, 2009 12:05 pm 주제: 실행코드 및 지도 Level 3 미만 생성 시, 레벨3 |
|
|
아래 함수가 주기적으로 timer 이벤트에 의해 호출됩니다.
한 20여초 동안 20여회 잘 되다가, map = new DMAP(... ) 구문에서 튕겨나갑니다.
아랫쪽에 if(ex.number == -2147024809) 부분은 해당 에러에 대해서 에러 번호를 받아서 화면 전체를 PostBack 하도록 해 놓은 부분입니다. 이렇게 해야 해당 오류가 사라지기 때문입니다. (추측하건데, 하나의 세션에서 반복된 호출을 일정 횟수 이상은 막아 놓은 것이 아닌가 싶습니다.) 매번 이렇게 Page PostBack할 때마다 화면을 다시 다 그려서 매우 눈이 피곤하게 됩니다.
추가적으로,
일단, 맵 생성 시, 아래 코드에서는 레벨 0으로 생성하고자 하나, 레벨 0, 1, 2 모두 레벨 3으로 생성됩니다. 나중에 zoomIn()이나, setCenter()를 이용해 레벨을 0 ~2 로 하려고 해도 안됩니다. (<-- 이거 꼭 좀 고쳐주세요.)
function showMap(){
var map;
var refresh_interval;
try{
if(map == null)
{
map = new DMap("map", {point:new DLatLng(27.264621, 121.053045), level:0});
map.setMapType("TYPE_SKYVIEW");
//map.addControl(new DIndexMapControl());
map.addControl(new DZoomControl());
}
//-------- Draw Marker ----------
var trc = document.getElementById("maptrace");
if(trc != null)
{
var prevPoint = null;
for(var i = trc.childNodes.length - 2; i >= 0 ; i--)
{
var theDayString = trc.childNodes[i].getElementsByTagName("Date")[0].nextSibling.data;
var theDay = new Date(theDayString.substring(0,4),theDayString.substring(5,7),theDayString.substring(8,10));
var beganDay = new Date(2009,10,26);
if(theDay > beganDay)
{
var point = new DLatLng(parseFloat(trc.childNodes[i].getElementsByTagName("LAT")[0].nextSibling.data), parseFloat(trc.childNodes[i].getElementsByTagName("LNG")[0].nextSibling.data));
var messageInfo = trc.childNodes[i].getElementsByTagName("win")[0].nextSibling.firstChild.data + ": " + trc.childNodes[i].getElementsByTagName("Date")[0].nextSibling.data;
map.addOverlay(new DMark(point, { infowindow : new DInfoWindow(messageInfo), draggable:false }));
}
}
}
}
catch(ex)
{
if(ex.number == -2147024809)
{
StopTheClock();
self.location.reload(true);
}else{
alert("Daum map problem. Try to push \"show\" later.");
StopTheClock();
}
}
}
// -->
</script> |
|
| 위로 |
|
 |
tadoli Site Admin
가입: 2008년 9월 4일 올린 글: 371
|
올려짐: 목 11월 05, 2009 4:03 pm 주제: |
|
|
new DMap() 해서 꼭 지도를 생성해야 하는 것인지요??
말씀하신 내용은 다음과 같은 방법으로도 구현가능할 것 같습니다.
| 코드: |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>다음 지도API 테스트 페이지 </title>
<script type="text/javascript" src="http://apis.daum.net/maps/maps2.js?apikey=DAUM_MAPS_DEMO_APIKEY"></script>
<script type="text/javascript">
var points = new Array();
points[0] = new DLatLng(37.529196714213114, 126.92506196011036);
points[1] = new DLatLng(37.529136714213114, 126.92518196011036);
points[2] = new DLatLng(37.529186714213114, 126.92510196011036);
points[3] = new DLatLng(37.531196714213114, 126.92560196011036);
var N = 4;
var mark = new DMark(points[0], {label: "이동마커"} );
var i = 0;
function moveTarget()
{
map.panTo(points[i%N]);
mark.setPoint(points[i%N]);
i++;
}
// -->
</script>
</head>
<body>
<div id="map" style="width:600px;height:400px;"></div>
<script type="text/javascript">
var loc = new DLatLng(37.529196714213114, 126.92506196011036);
map = new DMap("map");
map.setCenter(loc, 2);
map.addOverlay(mark);
//moveTarget();
setInterval("moveTarget()", 2000);
</script>
</body>
</html>
|
|
|
| 위로 |
|
 |
|