あなたは(あなたがマップ-APIをロード少なくともない道を経由して)コールバックに引数を渡すことはできません
:
問題は、我々は機能をこのように呼んでいるということです回避策:あなたはcallback
でそれらにアクセスできるようになります、スクリプト・タグの属性などのパラメータを格納します。
<?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
として(代わりに、関数名の)関数の参照を定義するオプション持つ電子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