당신은 (당신이지도-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의 제안대로) 또는 쿠키를 통해 저장하고 필요할 때 클라이언트에서 읽습니다.
일부 코드 공유 –
'sessionStorage'를 사용하는 것이 좋습니다 - 대부분의 현대식 브라우저는 아니지만 대부분의 브라우저에서 지원되며 데이터를 읽고 쓸 수 있습니다. – RamRaider