如何使用 php-mysql,js 在谷歌地图上显示多个位置

Posted

技术标签:

【中文标题】如何使用 php-mysql,js 在谷歌地图上显示多个位置【英文标题】:how to displaying multiple location on google map using php-mysql,js 【发布时间】:2018-03-11 00:08:48 【问题描述】:

我必须尝试从 db 中获取 lat ,lng 值并像这样将结果编码为 json

["name":"ahmedabad,GUJ","lat":"72.5226896","lng":"72.5226896"]

但标记未显示在地图上(位置未显示在地图上)

这是我的代码,我的错误是什么,请指导我

<?php

include "db.php";


    /* lat/lng data will be added to this array */
    $locations=array();
    $query =  $db->query("SELECT * FROM ds_petroling_history");
        while( $row = $query->fetch_assoc() )

            $nama_kabkot = $row['name'];
            $longitude = $row['lng'];                              
            $latitude = $row['lat'];

            /* Each row is added as a new array */
            $locations[]=array( 'name'=>$nama_kabkot, 'lat'=>$longitude, 'lng'=>$longitude );
        
        /* Convert data to json */
        $markers = json_encode($locations);
?>


<html>
    <head>


    </head>
    <body>

       <div><?php echo $markers ?></div> 


     <script type='text/javascript'>
    <?php
        echo "var markers=$markers;\n";

    ?>

    function initMap() 

        var latlng = new google.maps.LatLng(23.0117523,72.5226665);
        var myOptions = 
            zoom: 10,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControl: false
        ;

        var map = new google.maps.Map(document.getElementById("peta"),myOptions);
        var infowindow = new google.maps.InfoWindow(), marker, lat, lng;

        var json=JSON.parse( markers );

        for( var o in json )

            lat = json[ o ].lat;
            lng=json[ o ].lng;
            name=json[ o ].name;

            marker = new google.maps.Marker(
                position: new google.maps.LatLng(lat,lng),
                name:name,
                map: map
            ); 
            google.maps.event.addListener( marker, 'click', function(e)
                infowindow.setContent( this.name );
                infowindow.open( map, this );
            .bind( marker ) );
        
    
    </script>  
       <div id="peta" style="width: 100%; height: 660px;">
       </div>

    <script async defer src="https://maps.googleapis.com/maps/api/js?key=yourkey&callback=initMap"
  type="text/javascript"></script>
    </body>
</html>

从 db 中成功获取值并在 json 中编码,但在地图上找不到那些坐标位置

【问题讨论】:

【参考方案1】:

您刚刚将标记的值分配给 php var 而不是 javascript var

    /* Convert data to json */
    $markers = json_encode($locations);
    echo "<script>
            var markers[] = " . $markers .";

          </script>";
?>

【讨论】:

试试lat = parseFloat(json[ o ].lat);lng=parseFloat(json[ o ].lng); asnwer 已更新 ...但请检查 lat 和 lng 的 json_encode 数字或字符串。如果您有字符串,则必须使用 parseFloat 进行转换 ..

以上是关于如何使用 php-mysql,js 在谷歌地图上显示多个位置的主要内容,如果未能解决你的问题,请参考以下文章

如何使用javascript在谷歌地图中的多个标记之间绘制路线图

如何通过ajax请求获得的json数据使用vue js在谷歌地图上标记经纬度?

如何通过对vue js中的每个搜索结果使用模态在谷歌地图上显示json数据获得的纬度和经度?

如何在谷歌地图中设置缩放级别

如何在 asp.net 页面中使用 javascript 在谷歌地图上显示点?

获取用户国家和城市名称并在谷歌地图上定位