2012-05-20 15 views
1

我想创建一个自定义谷歌地图使用经度和纬度,我有我的SQL数据库。所以我试图将这些结果直接放到我的jocery代码中。但它不起作用。有没有人有任何想法我怎么能做到这一点?我查了一切可能,找不到答案。提前谢谢你。这里是我的代码:使用PHP创建自定义谷歌地图

<script type='text/javascript'>//<![CDATA[ 

var map; 
var global_markers = []; 
[<?php 
include 'admin/dbconn.php'; 

$getLoc = mysql_query("SELECT * FROM EanHotels WHERE City = 'Acapulco'") or die(mysql_error()); 
while($row = mysql_fetch_array($getLoc)){ 
    $name = $row['name']; 
    $lat = $row['Latitud']; 
    $lon = $row['Longitude']; 
    $address = $row['Address1']; 
    echo $lat; 
    echo $lon; 

?> 
var markers = [[<?php echo $lat ?>, <?php echo $lon ?>, '<?php echo $name ?>'], <?php } ?> 
]; 


var infowindow = new google.maps.InfoWindow({}); 

function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(40.77627, -73.910965); 
    var myOptions = { 
     zoom: 1, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    addMarker(); 
} 

function addMarker() { 
    for (var i = 0; i < markers.length; i++) { 
     // obtain the attribues of each marker 
     var lat = parseFloat(markers[i][0]); 
     var lng = parseFloat(markers[i][1]); 
     var trailhead_name = markers[i][2]; 

     var myLatlng = new google.maps.LatLng(lat, lng); 

     var contentString = "<html><body><div><p><h2>" + trailhead_name + "</h2></p></div></body></html>"; 

     var marker = new google.maps.Marker({ 
      position: myLatlng, 
      map: map, 
      title: "Coordinates: " + lat + " , " + lng + " | Trailhead name: " + trailhead_name 
     }); 

     marker['infowindow'] = contentString; 

     global_markers[i] = marker; 

     google.maps.event.addListener(global_markers[i], 'click', function() { 
      infowindow.setContent(this['infowindow']); 
      infowindow.open(map, this); 
     }); 
    } 
} 

window.onload = initialize; 
//]]> 

</script> 

回答

1

您是否检查过markers变量上该脚本的输出?这似乎与格式化的数字输出有关。

JavaScript的预计数字在国际格式,用句点作为小数点分隔符:10.2

在一些地方的服务器被配置为使用逗号作为小数点分隔符,让你的脚本的输出将返回数组数字,不是一个数字带小数位:

[[ 1,00012, 1,45678, 'name' ]] 

此外,你必须在markers变量声明的末尾一个额外的逗号,右方括号]

+0

我才迪我没有想到看到结果......我觉得有点愚蠢,但就是这样!我想到了!谢谢 – lov2code