클러스터러를 적용하기위해 별도의 php파일을 만들었는데 문제가 있습니다

클러스터 예제에 포함된 chicken.json 파일을 적용하면 이상없이 클러스터러가 적용된 지도를 볼 수 있습니다.

다만 제 서버에 있는 좌표를 가져와서 적용할 때 문제가 생기는데요

chicken.php파일 내용입니다.

header(‘Content-Type: application/json’);
$sql = " Select * From daum_map";
$result = mysql_query($sql);
$position = array();
while($row = mysql_fetch_array($result)){
$lat = $row[‘wr_3’];
$lng = $row[‘wr_4’];
$item = array(“lat”=> $lat, “lng”=>$lng);
array_push($position, $item);
}
$board = array();
$board[‘positions’] = $position;
$output = json_encode($board);
echo urldecode($output);

이런식으로 php 파일을 만들어 chicken.php 파일만 화면에 띄우면 chicken.json 파일과 동일한 형식으로 출력되는 것을 확인하였는데 실제

$.get("./chicken.php", function(data) {
// 데이터에서 좌표 값을 가지고 마커를 표시합니다
// 마커 클러스터러로 관리할 마커 객체는 생성할 때 지도 객체를 설정하지 않습니다
var markers = $(data.positions).map(function(i, position) {
return new daum.maps.Marker({
position : new daum.maps.LatLng(position.lat, position.lng)
});
});
// 클러스터러에 마커들을 추가합니다
clusterer.addMarkers(markers);
});

이렇게 적용을 하면 화면에 지도는 나오나 클러스터러가 되지 않습니다.

그래서

var data = <?php include "./chicken.php"?>;
var markers = data.positions.map(function(position, i) {
return new daum.maps.Marker({
position : new daum.maps.LatLng(position.lat, position.lng)
});
});
clusterer.addMarkers(markers);

이런식으로 바로 include 시켰더니 정상적으로 클러스터러가 적용됩니다.

url에 파라미터를 이용해야 하기 때문에 $.get("./chicken.php", function(data) { 이런 식으로 소스를 구성해야하는데

chicken.php파일 소스가 잘못 된건가요?

어디서 오류가 있는지 몇일째 고생중입니다.

도움 부탁드립니다.

많은 시도를 해보셨으리라 생각됩니다만,

혹시 php에서 urldecode 하지 않고 json_encode된 상태로만 내려보낸 뒤에

클라이언트에서 확인해 보는건 어떤가요?

네 그렇게도 해봤는데 출력이 되질 않습니다.
처음에도 대략 말씀은 드린 부분인데 제가 제작한 php 파일을 화면으로 출력해서 카피한후
chicken.php 파일에 덮어쓰고(쿼리를 돌리지 않고 txt화된 파일이 되겠지요) $.get(./chicken.php) 이렇게 호출하면 정상적으로 출력이 됩니다.
결론적으로 쿼리문이 $.get 할때는 제대로 돌지 않거나 다른 이유가 있다는 것인데요… ㅜㅜ
조금더 관심있게 확인 부탁드립니다. 잡이 오질 않습니다-.-;;

사실 제가 자세히 봐 드리고 싶어도 못하는게…
php를 잘 모른다는 것은 차치하더라도
shkff님과 같은 개발환경을 맞출 수 없다는 것이 가장 큽니다.
sql에서 가져오는 부분이 잘못됐는지,
serialize 하는 로직이 잘못됐는지,
디코딩이 잘못 되었는지…
디버깅을 할 수 없기에
어디가 잘못 되었는지 알 수가 없어요.

개발자 도구에 찍힌
response body의 결과를 보면 실마리를 찾을 수 있을 것 같습니다.

네 감사합니다.
도전해보고 다시 문의드려보겠습니다.

1개의 좋아요

구글링 해본 결과는 json_encode 까지만 하면 자동으로 serialize가 된다고 하며
그 값 그대로 response로 내려주면,
클라에서 받아서 JSON.parse를 해주면 그냥 될 것 같은데 말이죠… 흐음…

해결하시길 바랄게요.

감사합니다.

이문제는 php에서 header를 파일 제일 상단에 넣었더니 발생하는 문제였고요

json_encode 바로 상단에 header를 위치햇더니 정상적으로 동작합니다.

다시한번 관심 감사합니다.

1개의 좋아요

어렵네요 php… 아무튼 해결하셨다니 다행입니다.