Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在google地图中显示标记从mysql php检索数据_Php_Javascript_Mysql - Fatal编程技术网

如何在google地图中显示标记从mysql php检索数据

如何在google地图中显示标记从mysql php检索数据,php,javascript,mysql,Php,Javascript,Mysql,我在车辆跟踪系统工作,这里我把GPS数据存储在MySql中。我需要做的是在谷歌地图上显示标记。每行数据表示每秒的GPS数据。这里我的问题是我不能在谷歌地图上每秒钟显示一个标记 注意:我在js中使用定时器函数,这就是为什么每秒都分配一个变量,并且该变量将与db中的每秒数据匹配 这是我的代码: <script type="text/javascript"> <?php $vehi = 1; ?> window.setInterval(function initialize(

我在车辆跟踪系统工作,这里我把GPS数据存储在MySql中。我需要做的是在谷歌地图上显示标记。每行数据表示每秒的GPS数据。这里我的问题是我不能在谷歌地图上每秒钟显示一个标记

注意:我在js中使用定时器函数,这就是为什么每秒都分配一个变量,并且该变量将与db中的每秒数据匹配

这是我的代码:

<script type="text/javascript">
<?php $vehi = 1; ?>

window.setInterval(function initialize()
{

<?php   

    $sql= mysql_query("select * from maploca where id='$vehi'");
    $sqlnm = mysql_num_rows($sql);
    $sqlqry=mysql_fetch_object($sql);

?>


    <?php $vehi++;?>
    var json = [
                { "lat":<?php echo $sqlqry->latitude; ?>,
                  "lng":<?php echo $sqlqry->longitude; ?> }]
    var latlng = new google.maps.LatLng(<?php echo $sqlqry->latitude;?>,<?php echo $sqlqry->longitude;?>);

    var myOptions = {
    zoom: 18,
    center: latlng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    var polylineCoordinates = [
    new google.maps.LatLng(<?php echo $sqlqry->latitude;?>,<?php echo $sqlqry->longitude;?>)];
     var polyline = new google.maps.Polyline({
     path: polylineCoordinates,
     strokeColor: '#FF0000',
     strokeOpacity: 1.0,
     strokeWeight: 2,
    editable: true
     });

    polyline.setMap(map);
    for (var i = 0, length = json.length; i < length; i++) {
    var data = json[i],
          latLng = new google.maps.LatLng(data.lat, data.lng); 

      // Creating a marker and putting it on the map
      var marker = new google.maps.Marker({
        position: latLng,
        map: map
      }); 
    } 
}, 1000);

</script>

setInterval(函数初始化()
{

这段代码不起作用。你混合使用PHP和JS的方式不应该是混合的

我建议创建两个单独的部分用于显示(JS)和获取数据(PHP)

setInterval应该调用php页面,该页面将根据timeparam返回坐标。 Javascript将迭代它自己的变量(而不是php变量),并使用ajax php网页调用添加新标记的映射


例如,

这段代码不起作用。你混合使用PHP和JS的方式不应该混合使用

我建议创建两个单独的部分用于显示(JS)和获取数据(PHP)

setInterval应该调用php页面,该页面将根据timeparam返回坐标。 Javascript将迭代它自己的变量(而不是php变量),并使用ajax php网页调用添加新标记的映射


例如,

每次计时器滴答响时,您都需要使用AJAX,或者每1秒刷新一次页面。显然,后者不是一个好主意。原因是页面上的PHP不会在计时器滴答响时执行(仅在第一次加载时)

您必须编写第二个文件,返回显示pin所需的经纬度数据

ie:(使用jQuery)

LATLONG服务:(/ajax/getlatlong.php?vid=1)


地图页:

<script type="text/javascript">
    <?php $vehi = 1; ?>

    var myGM = function() {
        var me = this;

        <?php   
            $sql= mysql_query("select * from maploca where id='$vehi'");
            $sqlnm = mysql_num_rows($sql);
            $sqlqry=mysql_fetch_object($sql);
        ?>

        <?php $vehi++;?>
        var json = [{ 
            "lat":<?php echo $sqlqry->latitude; ?>,
            "lng":<?php echo $sqlqry->longitude; ?> 
        }];

        var latlng = new google.maps.LatLng(json[0].lat,json[0].lng);

        var myOptions = {
            zoom: 18,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        var polylineCoordinates = [latlng];

        var polyline = new google.maps.Polyline({
            path: polylineCoordinates,
            strokeColor: '#FF0000',
            strokeOpacity: 1.0,
            strokeWeight: 2,
            editable: true
        });

        polyline.setMap(map);

        window.setInterval(function() {
            $.getJSON( "/ajax/getlatlong.php?vid=1&callback=?" )
                .done( function (data) {
                    me.updateMap(data);
                });   
        }, 2000);

        this.updateMap = function(data) {

            $(data).each(function() {
                var latLng = new google.maps.LatLng(this.lat, this.lng); 

                // Creating a marker and putting it on the map
                var marker = new google.maps.Marker({
                    position: latLng,
                    map: me.map
                }); 
            });

        }
    } 

    window.onload = function() {
        window.trackingMap = new myGM();
    }

</script>

var myGM=函数(){
var me=这个;

每次计时器滴答声或每1秒刷新一次页面时,您都需要使用AJAX。显然,使用后者不是一个好主意。原因是页面上的PHP不会在每次计时器滴答声时执行(仅在第一次加载时)

您必须编写第二个文件,返回显示pin所需的经纬度数据

ie:(使用jQuery)

LATLONG服务:(/ajax/getlatlong.php?vid=1)


地图页:

<script type="text/javascript">
    <?php $vehi = 1; ?>

    var myGM = function() {
        var me = this;

        <?php   
            $sql= mysql_query("select * from maploca where id='$vehi'");
            $sqlnm = mysql_num_rows($sql);
            $sqlqry=mysql_fetch_object($sql);
        ?>

        <?php $vehi++;?>
        var json = [{ 
            "lat":<?php echo $sqlqry->latitude; ?>,
            "lng":<?php echo $sqlqry->longitude; ?> 
        }];

        var latlng = new google.maps.LatLng(json[0].lat,json[0].lng);

        var myOptions = {
            zoom: 18,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
        var polylineCoordinates = [latlng];

        var polyline = new google.maps.Polyline({
            path: polylineCoordinates,
            strokeColor: '#FF0000',
            strokeOpacity: 1.0,
            strokeWeight: 2,
            editable: true
        });

        polyline.setMap(map);

        window.setInterval(function() {
            $.getJSON( "/ajax/getlatlong.php?vid=1&callback=?" )
                .done( function (data) {
                    me.updateMap(data);
                });   
        }, 2000);

        this.updateMap = function(data) {

            $(data).each(function() {
                var latLng = new google.maps.LatLng(this.lat, this.lng); 

                // Creating a marker and putting it on the map
                var marker = new google.maps.Marker({
                    position: latLng,
                    map: me.map
                }); 
            });

        }
    } 

    window.onload = function() {
        window.trackingMap = new myGM();
    }

</script>

var myGM=函数(){
var me=这个;

谢谢你的回答…我得到了你的分数。但是我的问题是我在哪里以及如何使用增量变量来匹配db…谢谢你的回答…我得到了你的分数。但是我的问题是我在哪里以及如何使用增量变量来匹配db。。。