php - 谷歌地图API和PHP集成问题

标签 php javascript google-maps-api-3

我有一个显示良好的 Google map (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'); ?>

最佳答案

问题可能出在这一行:

 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 ,还有addslashes()所以"也不会破坏 JavaScript 字符串

title:"<?php echo str_replace("\n", '\n', str_replace("\r",'', addslashes($airport_name[$selected_airport]))); ?> Airport Reference Point\na new line\nanother line"

关于php - 谷歌地图API和PHP集成问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13748067/

相关文章:

php - TCPDF 页边距问题

javascript - Firebase在添加/删除数据时,应用程序多次执行功能

javascript - angularjs修改div中的日期(不是日期对象)

android - 获取MD5指纹的问题

google-maps - 街景全景完全灰色

php - 如何在 sql 语句中使用 sql 数据库中的数组

php - Cron 不执行 shell 脚本..但从命令行工作

javascript - 如何使用一个开始日期更改多个表行的日期

google-maps-api-3 - 为每个多边形打开 InfoWindow 谷歌地图 V3

php - 我应该跨域发送 POST 数据吗?