2016-10-09 14 views
0

這裏是代碼,我確實從數據庫中獲取了經度和緯度,但現在無法將作家寫入Google Javascript Maps API以在地圖上製作紅圈。我認爲Js對象存在一些問題。如何將php數組傳遞給Google JavaScript Map API製作標籤?

<?php 
    error_reporting(0); 
    $db = new mysqli("localhost", "root", "", "app"); 
    if ($db->connect_errno) { 
     die("<center>Sorry, please check your network connection!</center>"); 
    } 

    $longiArray = array(); 
    $latitArray = array(); 
    $num  = 0; 

    $longitude = $db->query("SELECT * FROM water"); 
    $longitude->num_rows; 

    while ($row = $longitude->fetch_object()) { 
     $longiArray[$num] = $row->longi; 
     $latitArray[$num] = $row->latit; 
     $num++; 
    } 
    ?> 
    <!DOCTYPE html> 
    <html> 
     <head> 
      <meta content="initial-scale=1.0, user-scalable=no" name="viewport"> 
       <meta charset="utf-8"> 
        <title> 
         Circles 
        </title> 
        <style> 
         html, body { 
      height: 100%; 
      margin: 0; 
      padding: 0; 
      } 
      #map { 
      height: 100%; 
      } 
        </style> 
       </meta> 
      </meta> 
     </head> 
     <body> 
      <div id="map"> 
      </div> 
      <script> 

    var city = new Array(); 
    var counter = <?php echo"$num";?>; 
    for (var x = 0; var x < counter; var x++){ 
     var citymap = { 
     city[x] = { 
      center: {lat: <?php echo"$latitArray[x]";?>, 
      lng: <?php echo"$longiArray[x]";?>}, 
      population: 10 
     }, 
     } 
    }; 

    function initMap() { 
     // Create the map. 
     var map = new google.maps.Map(document.getElementById('map'), { 
     zoom: 13, 
     center: {lat: -28.73226, lng: 24.76232}, 
     mapTypeId: google.maps.MapTypeId.TERRAIN 
     }); 

    for (var city in citymap) { 

     var cityCircle = new google.maps.Circle({ 
     strokeColor: '#FF0000', 
     strokeOpacity: 0.8, 
     strokeWeight: 2, 
     fillColor: '#FF0000', 
     fillOpacity: 0.35, 
     map: map, 
     center: citymap[city].center, 
     radius: Math.sqrt(citymap[city].population) * 100 
     }); 
    } 



    } 
      </script> 
      <script async="" defer="" src="https://maps.googleapis.com/maps/api/js?key=Google API Key here &signed_in=true&callback=initMap"> 
      </script> 
     </body> 
    </html> 
+0

我做的地圖API的網站上的代碼的一些變化。現在無法工作 - - 。 – 879099766

+0

PHP生成的HTML/javascript看起來像什麼? – geocodezip

+0

它沒有產生任何東西。 – 879099766

回答

0

一對夫婦更正:

  1. Meta標籤是自閉,所以他們並不需要一個</meta>。有關更多信息,請參閱MDN
  2. 獲取密鑰爲您的谷歌地圖 - 指Google Maps documentation for this

    所以這樣的:<script async defer src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap" type="text/javascript"></script>
    應該成爲這樣的:
    <script async defer src="https://maps.googleapis.com/maps/api/js?key=asdf23f2...23f&callback=initMap" type="text/javascript"></script>

  3. 生成使用PHP和json_encode見下文例如JavaScript變量的cityMap中。每個數據庫記錄是否有name列?我們需要爲每個城市(如「芝加哥」,「溫哥華」等)的標籤,以便對每個城市的關鍵:
$longitude = $db->query("SELECT * FROM water"); 
//$longitude->num_rows;//what is the point of this line? 
$cityMap = array(); 
while ($row = $longitude->fetch_object()) { 
    //presuming we have a name column - otherwise assign from another source (e.g. array of cities) 
    $cityMap[$row->name] = array(
    'center' => array(
     'lng' => $row->longi, 
     'lat' => $row->latit 
    ), 
    'population' => 10 
); 
?> 
<!-- in the html body .... --> 

<script> 

var citymap = <? echo json_encode($cityMap); ?>; 

function initMap() { 
+0

1)謝謝,明白吧。 2)我確實擁有它,當發佈這個問題時我刪除了KEY。 3)它有一個名爲城市的列(在db中稱爲「城市」),那麼城市名稱每次都必須有所不同? (在數據庫中,它是同一個城市)。在json_encode($ cityMap)中,$ cityMap它是php中的數組,它是否將整個php數組編碼爲Js數組? – 879099766

+0

我確實進行了更改,但仍未生成Google地圖。 <?php error_reporting(0); $ db = new mysqli(「localhost」,「root」,「」,「app」); if($ db-> connect_errno){ die(「

對不起,請檢查您的網絡連接!
」); } $ select = $ db-> query(「SELECT * FROM water」); $ select-> num_rows; $ cityMap = array(); 而($行= $選擇 - > fetch_object()){$ cityMap中[$行向>城市] =陣列( '中心'=>數組( 'LNG'=> $行向>茇, 'lat'=> $ row-> latit, ), 'population'=> 10, ); } ?> – 879099766

+0

是的數組鍵必須是唯一的 - 每[php.net](http://php.net/array):'如果數組聲明中的多個元素使用相同的鍵,只有最後一個會所以你可以在每個城市追加'num'的值:例如'$ citymap [$ row-> city。$ num ++] = array('center'...'有道理嗎? –

-1

錯誤來自cityArray in javascript。糾正像波紋管:

<?php 
echo "var city = new Array();"; 
echo "var counter = $num"; 
for($x=0 ; $x<$num ; $x++){ 
     echo "var citymap = {". 
     "city[x] = {". 
      "center: {lat: $latitArray[$x] ,". 
      "lng: $longiArray[$x] }, ". 
      "population: 10". 
     "},". 
     "}"; 
} 
?> 
+0

這將導致'var citymap'在每次迭代中被重新聲明,所以它將只包含經度和緯度數組中的最後一個值...同樣,'city [x]'中的'x'不會有值,因爲在那之前沒有'var x' ... –

+0

嗯......我確實嘗試了,但沒有產生任何東西。 – 879099766

相關問題