2013-12-17 41 views
0

我從數據庫中檢索一個LatLng座標字符串,並使用PHP的爆炸函數並將其存儲在數組中。我想將數組從PHP傳遞到JavaScript。此外,我希望多邊形函數接受數組並相應地繪製座標。我目前很難過。 :(請幫助LatLng作爲Google Maps API中的分解陣列

<script type="text/javascript" 
      src="https://maps.googleapis.com/maps/api/js?key=AIzZfro&sensor=false"> 
</script> 
<script> 
    function initialize() { 
     var myLatLng = new google.maps.LatLng(8.5000,125.8333); 
     var myOptions = { 
      zoom: 8, 
      center: myLatLng, 
     }; 

     var map = new google.maps.Map(document.getElementById("map-canvas"), 
      myOptions); 
     var davaoCoordinates = [ 
      new google.maps.LatLng(7.0644,125.6078), 
      new google.maps.LatLng(8.4833,124.6500), 
      new google.maps.LatLng(8.5000,125.8333) 
     ]; 

     var davaoCity = new google.maps.Polygon({ 
      path: davaoCoordinates, 
      strokeColor: "#FF0000", 
      strokeOpacity: 1.0, 
      strokeWeight: 2 
     }); 

     davaoCity.setMap(map); 
    } 
    google.maps.event.addDomListener(window, 'load', initialize); 
</script> 

這裏是PHP代碼:

<?php 
$connect = mysql_connect("localhost", "root", ""); 
mysql_select_db('capdb'); 

if (mysqli_connect_errno()){ 
    echo "Failed to connect to database: " . mysqli_connect_error(); 
} 

$query ="SELECT cap_info.event, cap_info.sendername, cap_info.urgency, cap_area.polygon 
    FROM cap_info 
    INNER JOIN cap_area ON cap_info.capid = cap_area.capid 
    WHERE cap_info.capid =1"; 
$result = mysql_query($query); 

if (!$result){ 
    echo "Query Error." . mysql_error(); 
    exit; 
} 

if (mysql_num_rows($result) == 0){ 
    echo "No rows found, nothing to print."; 
    exit; 
} 
while ($row = mysql_fetch_array($result)){ 
    $event = $row['event']; 
    $sender = $row['sendername']; 
    $urgency = $row['urgency']; 
    $polygon = $row['polygon']."\n"; 
} 
$coordsArray = explode (" ", $polygon); 
$count = sizeof($coordsArray); 
//$n=0; 
//while ($n < $count){ 
//echo $coordsArray[$n]; 
//$n++; 
//} 
?> 
+0

一個提示:不要使用mysql_connect http://php.net/function.mysql-connect如果你想JavaScript加載一堆座標,那麼你的PHP可以返回JSON。只需使用json_encode返回它http://www.php.net/json_encode。如果你只想在頁面加載時創建點,那麼mjayt應該爲你工作。 – HMR

回答

1

不知道你的陣列看起來像什麼,但是,在你的PHP,只需創建爲聚點喜歡的東西下面。這至少應該幫助你指明正確的方向。

$poly = ""; 

// loop all values 
foreach($array as $v) { 
    $poly .= "new google.maps.LatLng(".$v."),\n"; 
} 

// add first item from array to close poly 
$poly .= "new google.maps.LatLng(".$array[0].")"; 

然後,在你的JavaScript,只是附和,你需要他們

var map = new google.maps.Map(document.getElementById("map-canvas"),myOptions); 
var davaoCoordinates = [ 
<?php echo $poly; ?> 
]; 
+0

謝謝! :) coordsArray只是一個簡單的一維數組。數據庫中的座標字段只是將其存儲爲一個varchar。我用空格「」作爲需要的爆炸函數的分隔符。所以從這個:「7.0644,125.6078 8.4833,124.6500 8.5000,125.8333」。 變成這樣: 7.0644,125.6078 8.4833,124.6500 8.5000,125.8333 所以基本上,coordsArray []。 – Nicole

+0

然後你應該能夠更新循環。我會在上面快速更新它。 – Mattt

+0

我做到了。謝謝你的幫助。 :) – Nicole

相關問題