2017-09-06 131 views
-1

我想在googlemap上显示来自mysql的多个标记。来自MySQL数据库的谷歌地图上的多个标记不显示

我的地图显示正确,但标记没有显示出来。

我有一个PHP脚本,从MySQL中检索数据。

PHP:

<?php 

    // Include config file 

    require_once 'config.php'; 

    $sql = "SELECT client_address, GPS1, GPS2 FROM client"; 
    $stmt = $mysqli->prepare($sql); 
    if($stmt->execute()){ 
     $result = $stmt->get_result(); 
    } else $stmt->close(); 

    foreach ($result as $key) 
     $locations[]=array('client_address'=>$key['client_address'], 'GPS1'=> $key['GPS1'], 'GPS2'=> $key['GPS2']); 
    $markers = json_encode($locations); 
?> 

$标记:

[{"client_address":"SA294","GPS1":"-34.031300","GPS2":"18.577680"},{"client_address":"SB619","GPS1":"-34.031510","GPS2":"18.575890"}] 

HTML:

<script> 
      <?php 
       echo "var markers=$markers;\n"; 
      ?> 

       function initMap() { 
       var latlng = new google.maps.LatLng(-34.031342, 18.577419); // default location 
       var myOptions = { 
        zoom: 16, 
        center: latlng, 
        mapTypeId: google.maps.MapTypeId.SATELLITE, 
        mapTypeControl: true 
       }; 

      var map = new google.maps.Map(document.getElementById('mapall'),myOptions); 
       var infowindow = new google.maps.InfoWindow(), marker, lat, lng; 
       var json=JSON.parse(markers); 

       for(var i in json){ 

        lat = (json[i].GPS1); 
        lng = (json[i].GPS2); 
        name = (json[i].client_address); 

        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> 
      <script async defer 
       src="https://maps.googleapis.com/maps/api/js?key=AIzaSyANS0uqM7qedfDCzPjJ3xoB15vh2DC4Tls&callback=initMap"> 
      </script> 

<div class="row"> 
<div class="col-md-4"> 
<div class="panel panel-primary"> 
<div class="panel-heading"><b>Siqalo Active Units</b></div> 
<div class="panel-body"> 
<div id="mapall" style="width:350px;height:350px;"></div> 
</div> 
</div>  
</div> 
</div> 

我立足很多这样的: Adding multiple markers on Google Maps from MySQL database

回答

2

你不需要做JSON.parse,你可以循环通过json标记。

for(i = 0; i < markers.length; i++) { 
    lat = (markers[i].GPS1); 
    lng = (markers[i].GPS2); 
    name = (markers[i].client_address); 
0
  <?php 
      echo "var markers=$markers;\n"; 
     ?> 

这就是疯了。 做这个,而不是,因为你已经解析JSON字符串这应该工作,看起来更干净。

  <script> 

      var markers='<?=$markers;?>'; 


      function initMap() { ... 
+0

标记不显示是否我这样做。 – wazzahenry

相关问题