2016-07-21 2 views
1

Google지도 API를 사용하고 있으며 페이지를 새로 고침 할 때마다 마지막 센터와 줌 레벨을 유지해야합니다.Google지도 - initMap 기능에 매개 변수를 추가하는 방법은 무엇입니까?

나는 PHP 변수에서이 매개 변수를 가지고 있는데, 어떻게 initMap 함수를 변경하고이 매개 변수를 전달할 수 있습니까?

<script src="https://maps.googleapis.com/maps/api/js?key=*******&callback=initMap" async defer></script> 
+1

일부 코드 공유 –

+2

'sessionStorage'를 사용하는 것이 좋습니다 - 대부분의 현대식 브라우저는 아니지만 대부분의 브라우저에서 지원되며 데이터를 읽고 쓸 수 있습니다. – RamRaider

답변

-1

당신은 (당신이지도-API를로드 적어도 방법을 통해) 콜백에 인수를 전달할 수 없습니다

:

문제는 우리가 함수를 이런 식으로 호출하는 것입니다

<?php 
    //your parameters, defined in PHP 
    $goo=array('zoom'=>14,'center'=>array('lat'=>52.549,'lng'=>13.425)); 
?> 
<div id="map_canvas"></div> 
<script> 
function initMap(){ 

    var opts = { 
         zoom: 0, 
         center: new google.maps.LatLng(0,0), 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }, 
     script= document 
     .querySelector('script[src^="https://maps.googleapis.com/maps/api/js"][data-goo]'), 
     custom; 

     if(script){ 
     custom=JSON.parse(script.getAttribute('data-goo')); 
     for(var k in custom){ 
      opts[k]=custom[k]; 
     } 
     } 
     map = new google.maps.Map(document.getElementById('map_canvas'), 
      opts); 
} 
</script> 

<script data-goo="<?php echo htmlentities(json_encode($goo));?>" 
     src="https://maps.googleapis.com/maps/api/js?callback=initMap&key=***" async defer> 
</script> 

또 다른 옵션 일 것이다 : 가능한 해결 방법 : callback 스크립트 태그의 속성과 매개 변수를 저장은, 당신은 그들에 액세스 할 수 있습니다 당신이 callback로 (대신 함수 이름의) 함수 참조를 정의 할 수있는 옵션이 전자 loader of the JSAPI : 처음에는 (마지막 줌/센터) 원하는 데이터를 소리로, 그러나

<?php 
    //your parameters, defined in PHP 
    $goo=array('zoom'=>14,'center'=>array('lat'=>52.549,'lng'=>13.425)); 
?> 
<div id="map_canvas"></div> 
<script> 
function initMap(params){ 

    var opts = { 
         zoom: 0, 
         center: new google.maps.LatLng(0,0), 
         mapTypeId: google.maps.MapTypeId.ROADMAP 
        }; 

     for(var k in params){ 
      opts[k]=params[k]; 
     } 

     map = new google.maps.Map(document.getElementById('map_canvas'), 
      opts); 
} 
</script> 

<script src="https://www.google.com/jsapi"></script> 
<script> 
    google.load('maps', 
       '3', 
       { other_params :'key=***', 
        callback : (function(params){return function(){initMap(params);}}) 
           (<?php echo json_encode($goo);?>) }); 
</script> 

사용할 수 있습니다 clientSide에서 serverSide에 저장할 이유가 없습니다. sessionStorage (@RamRaider의 제안대로) 또는 쿠키를 통해 저장하고 필요할 때 클라이언트에서 읽습니다.

관련 문제