正常に表示される Google マップがあります (Google Maps API v3 - 以下のコードを参照)。コードは最初に次のようにメインの index.php に挿入されました:-
<script type="text/javascript">
code here....
</script>
これはインライン コードとして問題なく動作し、index.php 内で使用して、PHP コードから Google Maps API に変数を挿入することもできます。
コードが大きくなるにつれて、Google Maps API の JavaScript を分離して、整理のために外部ファイルにポップしたいと考えました。
私の最初の考えは、次のようにファイルを挿入することでした:
<script type="text/javscript" src="code/googlemaps.php"></script>
これでそのまま動作しますが、PHP コードを挿入しようとするとすぐに動作しません。PHPサーバーがリクエストをどのように処理するかはよくわかりませんが、jsファイルをPHPパーサーに渡し、PHPコードを解析し、解析されたphpを含むjsをブラウザーに戻す必要があると思います.
コードはによってトリガーされます
<body onload="initialize()">
メインの index.php 内 (javascript は初めてなので、ご容赦ください)。
完全を期すために、使用しているjsコードを次に示します。
function initialize() {
// Main Google Map view variables
var mapOptions = {
zoom: 6,
center: new google.maps.LatLng(<?php echo $selected_lat . "," . $selected_lon; ?>),
mapTypeId: google.maps.MapTypeId.ROADMAP,
noClear: true,
panControl: true,
panControlOptions: {
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.TOP_RIGHT
},
scaleControl: true,
scaleControlOptions: {
position: google.maps.ControlPosition.BOTTOM_RIGHT
},
streetViewControl: false
};
// Display Google Map
var map = new google.maps.Map(document.getElementById("map_canvas"),
mapOptions);
//Display Select Airport Marker
var marker = new google.maps.Marker({
position: new google.maps.LatLng(<?php echo $selected_lat . "," . $selected_lon; ?>),
map: map,
title:"<?php echo $airport_name[$selected_airport]; ?> Airport Reference Point\na new line\nanother line"
});
// google.maps.Circle variables
var seRangeOptions = {
center: new google.maps.LatLng(<?php echo $selected_lat . "," . $selected_lon; ?>),
fillOpacity: 0.3,
fillColor: "blue",
map: map,
radius: <?php echo seradius; ?>,
strokeColor: "#000000",
strokeOpacity: 0.0,
strokeWeight: 0
};
// display Google Maps circle
serangecircle = new google.maps.Circle(seRangeOptions);
}
わかりました、問題は解決しました。これが私がやったことです、フィードバックを歓迎します、私はまだ学んでいます:) JavaScriptファイルに入れられた次のコード:
<?php session_start(); ?>
<?php echo 'var lat = "'.json_encode($_SESSION['lat']).'";';?>
これがすべて実行される順序については、まだ少しあいまいです。PHPがjavascriptファイルを解析し、PHP変数を挿入してから、ファイルをブラウザに返すと思いますか? また、Firebug などのユーティリティを使用すると、これが実際にどのように機能するかを確認できます。
また、ソースコードがブラウザーに表示される方法を整理しているように見えるjsファイルの上部に次のものを追加しました。
<?php header('Content-type: text/javascript'); ?>