2011-07-06 3 views
7

그래서 헤더에 JQuery, Google지도 API 및 내 앱에 사용하는 사용자 정의 Jquery 함수가로드되는 region.php라는 페이지가 있습니다. functions.js 파일에 있습니다.Google지도 - PHP 배열의 점을지도의 점으로 변환

region.php에서 MySQL 데이터베이스에서 몇 행을 가져 와서 PHP 배열 $ regions에 저장합니다.

내 functions.js 파일에서 $ regions 배열을 json_encode하여 Google Maps에서 $ regions 배열의 모든 경도와 경도를 재생하도록 내 함수에 전달하려고합니다. 그러나 인스턴트 메신저 자바 스크립트에 PHP 배열을 점점 문제가 발생했습니다.

나는 이것을 따라 왔지만 나를 위해 일하는 것 같지 않습니다 : Iterating through a PHP array in jQuery?. do not는 javascript가 그들이 제공하는 예제에서 PHP로 작동 할 수있는 것 같지 않습니다

아이디어가 있습니까? 메신저 이것에 대해 모든 잘못가는 경우 (그리고 나는 가정 - 자바 스크립트로 PHP 배열을 얻을 수있는 가장 좋은 방법이 무엇인지

Region.php $ 지역 =의 get_regions를();

foreach($regions as $region) : 

    print $region['name']; 

endforeach; 


print "<div id='map_view_canvas' style=\"width:300px; height:300px; \"></div>"; 

기능을?. 필요

var arrayFromPHP = <?php echo json_encode($viewFields) ?>; 

: 당신이 링크의 예에서 JS

$(document).ready(function() { 

    initialize_view_map(); 
} 

function initialize_view_map() 
{ 
    var latlng = new google.maps.LatLng(9.3939, 20.57268); 
    var myOptions = { 
     zoom: 2, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_view_canvas"), myOptions); 

    var mapPoints = <?php echo json_encode($regions) ?>; 

    $.each(mapPoints, function (i, elem) { 

     var newLatLng = new google.maps.LatLng(elem.latitude, elem.longitude); 

     var marker = new google.maps.Marker({ 
      position: newLatLng, 
      map: map, 
      draggable:false, 
      animation: google.maps.Animation.DROP 
     }); 

    }); 
} 
+0

일부 코드를 보여 주시겠습니까? –

+0

확인 내 코드가 추가되었습니다. – djt

답변

5

당신의 functions.js 파일이 아니라 php 파일에 들어가야합니다. 사이의 코드는 php이므로 서버 측에서 실행해야하며 자바 스크립트 (클라이언트 쪽이므로 PHP 또는 서버 측 코드 \ 변수 \ 등은 알 수 없습니다)에서 실행할 수 없습니다.

EDIT :

코드를 추가 했으므로 다음과 같이 시도해보십시오. 미안 해요, PHP는 너무 익숙하지 않다, 그러나 희망 당신은 아이디어를 얻을 : (

Regions.php 그런 다음 자바 스크립트가됩니다

$regions = get_regions(); 

foreach($regions as $region) : 

    print $region['name']; 

endforeach; 

print "<script>"; 
print "var mapPoints = "; 
echo json_encode($regions->toArray()); 
print "</script>"; 
print "<div id='map_view_canvas' style=\"width:300px; height:300px; \"></div>"; 

을 mapsPoint 변수가 이미 regions.php에 의해 출력 된주의 그래서 나는) 여기를 제거

$(document).ready(function() { 

    initialize_view_map(); 
} 

function initialize_view_map() 
{ 
    var latlng = new google.maps.LatLng(9.3939, 20.57268); 
    var myOptions = { 
     zoom: 2, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    var map = new google.maps.Map(document.getElementById("map_view_canvas"), myOptions); 

    $.each(mapPoints, function (i, elem) { 

     var newLatLng = new google.maps.LatLng(elem.latitude, elem.longitude); 

     var marker = new google.maps.Marker({ 
      position: newLatLng, 
      map: map, 
      draggable:false, 
      animation: google.maps.Animation.DROP 
     }); 

    }); 
} 

EDIT2 :

것을 시도 할 다음에 대한 참조를 업데이트하여 functions.js이 function.js.php하기 위해 이름을 변경한다 시도하고 또 다른 것은 - 그러면 PHP 파이프 라인을 통해 실행되고 js 파일에서 PHP 코드가 실행됩니다.

+0

아. 그 대답에 오류가 있습니까? 그것은 다음과 같습니다 : var arrayFromPHP = ; - 그 변수가 자바 스크립트 변수라는 것을 의미합니다. – djt

+0

아니요, 그 대답은 옳습니다. 그들은 단지 당신과 같은 별도의 자바 스크립트 파일을 가지고 있지 않습니다. 귀하의 PHP 파일에 자바 스크립트를 포함하거나 그냥 PHP에서 자바 스크립트 변수에로드 할 수 있습니다 (자바 스크립트 파일에서 사용하는 것입니다.하지만 너무 좋지는 않지만 전역 변수와 비슷합니다) – mutex

+0

hm i see. 이것에 관해서는 더 나은 것이 있습니까? – djt