使用PHP创建自定义谷歌地图

时间:2012-05-20 04:04:07

标签: php javascript mysql maps

我正在尝试使用我在sql数据库中使用的经度和纬度来创建自定义谷歌地图。所以我试图将这些结果直接放入我的地理编码器的jquery代码中。但它没有用。有没有人知道我怎么能这样做?我查了一切可能找不到答案。非常感谢你提前。这是我的代码:

<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 个答案:

答案 0 :(得分:1)

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

JavaScript期望国际格式的数字,句点为小数点分隔符:10.2

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

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

此外,在markers变量声明的末尾,在结束方括号]

之前,您还有一个额外的逗号