Kakao.maps.load 새로고침

저는 카카오맵을 사용하고 있습니다.
휴대폰은 삼성 휴대폰을 사용하고 있고, 삼성휴대폰에서 제공하는 브라우저를 사용하고 있습니다.
그런데, 삼성에서 제공하는 브라우저에서 카카오맵을 사용하기 위해
kakao.maps.load함수를 사용하면 새로고침이 무한반복됩니다.
어떻게 하면 새로고침이 무한반복되지 않게 할수 있을까요?

제가 사용하는 url은 https://foodsharing.kr/map
입니다.
지도를 불러오는 자바스크립트를 아래처럼 추가했습니다.

그리고 ajax로 지도를 표시합니다.
kakao.maps.load(function() 을 사용하지 않으면 지도가 나오지 않습니다.
지도가 표시되는 곳을 이렇게 해놓고

		<tr class="placesList">
			<td rowspan="2" class="align-middle">
				<input type="radio" id="store_no0" name="no" class="form-check-input" value="1" onclick="map_change(0, 1, 37.5527566807198, 127.205369894138, '');" checked="">
			</td>
			<td id="store-1">가게1</td>
			<td id="distance-1">0.88 km</td>

			<input type="hidden" id="posi_no-1" value="1">

			<input type="hidden" id="posi_y-1" value="37.5527566807198">
			<input type="hidden" id="posi_x-1" value="127.205369894138">
		</tr>

		<tr class="placeList" style="border-top: hidden;">
			<td id="addr-1" colspan="2">경기도 하남시 덕풍서로 70 (덕풍동)  </td>
		</tr>
		
		<tr class="placesList">
			<td rowspan="2" class="align-middle">
				<input type="radio" id="store_no1" name="no" class="form-check-input" value="13" onclick="map_change(1, 13, 37.5527566807198, 127.205369894138, '');">
			</td>
			<td id="store-13">시온10</td>
			<td id="distance-13">0.88 km</td>

			<input type="hidden" id="posi_no-13" value="2">

			<input type="hidden" id="posi_y-13" value="37.5527566807198">
			<input type="hidden" id="posi_x-13" value="127.205369894138">
		</tr>

		<tr class="placeList" style="border-top: hidden;">
			<td id="addr-13" colspan="2">경기 하남시 덕풍서로 70  </td>
		</tr>
		
		<tr class="placesList">
			<td rowspan="2" class="align-middle">
				<input type="radio" id="store_no2" name="no" class="form-check-input" value="2" onclick="map_change(2, 2, 37.5706553970601, 127.190262400037, 'S00000BB');">
			</td>
			<td id="store-2">가게09</td>
			<td id="distance-2">1.53 km</td>

			<input type="hidden" id="posi_no-2" value="3">

			<input type="hidden" id="posi_y-2" value="37.5706553970601">
			<input type="hidden" id="posi_x-2" value="127.190262400037">
		</tr>

		<tr class="placeList" style="border-top: hidden;">
			<td id="addr-2" colspan="2">경기 하남시 미사강변동로 180  </td>
		</tr>
		
		<tr class="placesList">
			<td rowspan="2" class="align-middle">
				<input type="radio" id="store_no3" name="no" class="form-check-input" value="8" onclick="map_change(3, 8, 37.5706553970601, 127.190262400037, '');">
			</td>
			<td id="store-8">김밥천국1</td>
			<td id="distance-8">1.53 km</td>

			<input type="hidden" id="posi_no-8" value="4">

			<input type="hidden" id="posi_y-8" value="37.5706553970601">
			<input type="hidden" id="posi_x-8" value="127.190262400037">
		</tr>

		<tr class="placeList" style="border-top: hidden;">
			<td id="addr-8" colspan="2">경기 하남시 미사강변동로 180 1403동 1207호 </td>
		</tr>
		
		<tr class="placesList">
			<td rowspan="2" class="align-middle">
				<input type="radio" id="store_no4" name="no" class="form-check-input" value="11" onclick="map_change(4, 11, 37.5706553970601, 127.190262400037, 'S00000BI');">
			</td>
			<td id="store-11">홈플러스</td>
			<td id="distance-11">1.53 km</td>

			<input type="hidden" id="posi_no-11" value="5">

			<input type="hidden" id="posi_y-11" value="37.5706553970601">
			<input type="hidden" id="posi_x-11" value="127.190262400037">
		</tr>

		<tr class="placeList" style="border-top: hidden;">
			<td id="addr-11" colspan="2">경기 하남시 미사강변동로 180 1403동1207호 </td>
		</tr>
		
	</tbody>
</table>

지도가 출력되는 부분을 kakao.maps.load 함수안에 넣었습니다.
// 마커를 담을 배열입니다
var markers = [];
var store_info = [];
var mapOption = map = ‘’;
var infowindow = ‘’;

var mapContainer = document.getElementById('map-box');// 지도를 표시할 div

kakao.maps.load(function() {
mapOption = {
// center: new kakao.maps.LatLng(37.552756, 127.205369),
center: new kakao.maps.LatLng(<?=$list[0]['posi_y']?>, <?=$list[0]['posi_x']?>), // 지도의 중심좌표
level: 3 // 지도의 확대 레벨
};

	// 지도를 생성합니다
	map = new kakao.maps.Map(mapContainer, mapOption);

	// 검색 결과 목록이나 마커를 클릭했을 때 장소명을 표출할 인포윈도우를 생성합니다
	infowindow = new kakao.maps.InfoWindow({
		zIndex: 1
	});

	$('.placesList').each(function(i, item){
		var store_no = $('#store_no'+i).val();
		var store_name = $('#store-'+store_no).text();
		var posi_y = $('#posi_y-'+store_no).val();
		var posi_x = $('#posi_x-'+store_no).val();
		var addr = $('#addr-'+store_no).text();
		var no = $('#posi_no-'+store_no).val();

		store_info.push([i, no, store_name, posi_y, posi_x, addr]);
	});

	displayPlaces(store_info);

}

// 검색 결과 목록과 마커를 표출하는 함수입니다
function displayPlaces(places) {

	var fragment = document.createDocumentFragment(),
		bounds = new kakao.maps.LatLngBounds(),
		listStr = '';

	// 검색 결과 목록에 추가된 항목들을 제거합니다

// removeAllChildNods(listEl);

	// 지도에 표시되고 있는 마커를 제거합니다
	removeMarker();

	// console.log('126 displayPlaces places=',places, ' places.length=',places.length);

	for (var i = 0; i < places.length; i++) {

		// places.push([i, no, store_name, posi_y, posi_x, area, addr]);
		// 마커를 생성하고 지도에 표시합니다
		//places[i][3] = posi_y값, places[i][4] = posi_x값
		var placePosition = new kakao.maps.LatLng(places[i][3], places[i][4]),
			marker = addMarker(placePosition, places[i][0]);

// itemEl = getListItem(i, places[i]); // 검색 결과 항목 Element를 생성합니다

		// 검색된 장소 위치를 기준으로 지도 범위를 재설정하기위해
		// LatLngBounds 객체에 좌표를 추가합니다
		bounds.extend(placePosition);

		// 마커와 검색결과 항목에 mouseover 했을때
		// 해당 장소에 인포윈도우에 장소명을 표시합니다
		// mouseout 했을 때는 인포윈도우를 닫습니다

		(function(marker, title, area, addr) {
			kakao.maps.event.addListener(marker, 'mouseover', function() {
				displayInfowindow(marker, title, area, addr);
			});

			kakao.maps.event.addListener(marker, 'mouseout', function() {
				infowindow.close();
			});

			//places[i][1] = no 값
			$('#store-'+places[i][1]).onmouseover = function() {
				displayInfowindow(marker, title, area, addr);
			};

			$('#store-'+places[i][1]).onmouseout = function() {
				infowindow.close();
			};
		})(marker, places[i][2], places[i][5], places[i][6]); // store_name, area, addr

// fragment.appendChild($(‘#store-’+places[i].no));
}

	// 검색결과 항목들을 검색결과 목록 Element에 추가합니다

// listEl.appendChild(fragment);
// menuEl.scrollTop = 0;

	// 검색된 장소 위치를 기준으로 지도 범위를 재설정합니다

// map.setBounds(bounds);
}

// 인포윈도우에 장소명을 표시합니다
function displayInfowindow(marker, store, area, addr) {
	var content = '<div style="padding:5px;z-index:1;"><strong>가게명 : ' + store + '</strong></div><div style="font-size:14px">'+area+ ' '+addr+'</div>';

	infowindow.setContent(content);
	infowindow.open(map, marker);
}

// 마커를 생성하고 지도 위에 마커를 표시하는 함수입니다
function addMarker(position, idx, title) {

	var imageSrc = 'https://t1.daumcdn.net/localimg/localimages/07/mapapidoc/marker_number_blue.png', // 마커 이미지 url, 스프라이트 이미지를 씁니다
		imageSize = new kakao.maps.Size(36, 37), // 마커 이미지의 크기
		imgOptions = {
			spriteSize: new kakao.maps.Size(36, 691), // 스프라이트 이미지의 크기
			spriteOrigin: new kakao.maps.Point(0, (idx * 46) + 10), // 스프라이트 이미지 중 사용할 영역의 좌상단 좌표
			offset: new kakao.maps.Point(13, 37) // 마커 좌표에 일치시킬 이미지 내에서의 좌표
		},
		markerImage = new kakao.maps.MarkerImage(imageSrc, imageSize, imgOptions),
		marker = new kakao.maps.Marker({
			position: position, // 마커의 위치
			image: markerImage
		});

	marker.setMap(map); // 지도 위에 마커를 표출합니다
	markers.push(marker); // 배열에 생성된 마커를 추가합니다

	// 마커가 드래그 가능하도록 설정합니다 
	marker.setDraggable(true); 
	
	return marker;
}

// 검색결과 목록의 자식 Element를 제거하는 함수입니다
function removeAllChildNods(el) {
	while (el.hasChildNodes()) {
		el.removeChild(el.lastChild);
	}
}

// 지도 위에 표시되고 있는 마커를 모두 제거합니다
function removeMarker() {
	for (var i = 0; i < markers.length; i++) {
		markers[i].setMap(null);
	}
	markers = [];
}
가게명 거리(km)

지도 API에서는 페이지를 새로고침 할 수 있는 API가 없습니다.

현재 알려주신 사이트에서 코드를 봐보면

navigator.geolocation.watchPosition(setPositionByGeo, getErr);
이렇게 position을 왓칭하고 있는 코드가 존재하고

setPositionByGeo라는 함수에서 특정 API를 호출한후에, 응답 결과로
map_wrap DOM에 html 함수로, map_wrap DOM의 내부 DOM tree를 모두 변경하는 작업을 수행하고 있습니다.

전체적인 사이트의 동작방식을 제가 정확히 알 수는 없습니다만, 우선 위와 같은 코드가 존재하고,
setPositionByGeo함수가 주기적으로 실행되는 것을 확인하실 수 있습니다.

이부분을 처리해 보시는게 좋을 것 같습니다.

setPositionByGeo함수가 주기적으로 실행된다고 하셨는데,
getCurrentPos()함수를 1번만 실행되게 하면 setPositionByGeo함수는 주기적으로 실행되지 않는 것인가요?
아니면 watchPosition 함수가 여러번 실행되는 함수인가요?
watchPosition 함수 대신에 getCurrentPosition함수를 사용하면 1번만 실행될까요?

그렇죠. watch는 말그대로 계속 감시하면서 업데이트를 하겠다는 것이라,

모바일에서 확인이 아닌, 개발은 PC에서 하실 것이니 크롬브라우저와 같은 것으로 개발자도구를 열어서 보시면,
주기적으로 setPositionByGeo 함수에서 API콜을 합니다.
이 함수는 watchPosition에 콜백으로 달려있구요.

위치를 가져오는 함수를 바꾸셔서, 의도한 방향대로 동작되는지 확인해 보시고,
watch를 쓰시더라도, clear를 할 수 있는 native함수가 또 존재하니; 이 함수의 사용법을 알아보셔도 됩니다,.

그리고 추가로 load함수를 사용하지 않으면 안된다는 것도,
지금 map_wrap DOM에 html 함수를 이용해서 다운받은 코드를 그대로 넣어서 브라우저로부터 파싱을 시키는 것이라서,
이때는 dapi.kakao.com을 통해서 그냥 부를경우에 지도API core스크립트를 자동으로 다운을 받을 수가 없기 때문에, load함수를 이용하실 수 밖에 없습니다.

이 부분 참고해 주시기 바랍니다.