1

我有一个显示良好的谷歌地图(谷歌地图 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'); ?>
4

1 回答 1

1

问题可能是这一行:

 title:"<?php echo  $airport_name[$selected_airport]; ?> Airport Reference Point\na new line\nanother line"

JavaScript 不接受换行符直接继续字符串,您必须使用\n,如果title:"<?php echo $airport_name[$selected_airport]; ?> Airport Reference Point\na new line\nanother line"返回多行字符串,那么它将破坏 JavaScript 代码。

尝试使用str_replace()函数将所有新行替换为\n,以及添加斜杠(),这样"也不会破坏 JavaScript 字符串

title:"<?php echo str_replace("\n", '\n', str_replace("\r",'', addslashes($airport_name[$selected_airport]))); ?> Airport Reference Point\na new line\nanother line"
于 2012-12-06T16:54:22.840 回答