如果我通过lat,lng作为变量,地图就会断裂


Map breaks if I pass lat, lng as variable

这让我抓狂。使用Google Maps v3,我正在使用php加载地图以确定lat-long:

function initialize() {
    var latlng = "<?php echo $lat;?>,<?php echo $long;?>";
    console.log(latlng);
    var mapOptions = {
        center: new google.maps.LatLng(<?php echo $lat;?>,<?php echo $long;?>),
        zoom: 8,
        mapTypeId: google.maps.MapTypeId.ROADMAP 
    };
    var map = new google.maps.Map(document.getElementById("map_canvas")
                                       , mapOptions);
}

这很好用。然而,如果我试图通过latlng var

center: new google.maps.LatLng(latlng),

地图只是显示了一个蓝色的屏幕,并且是破碎的(没有缩放或控件或任何东西)。控制台日志和源代码看起来是正确生成参数的。对可能发生的事情有什么想法吗?

我确实在body上有initialize(),但我在脚本中将其移动到了(document).ready。这似乎对这个问题没有任何影响。

这是因为

new google.maps.LatLng(<?php echo $lat;?>,<?php echo $long;?>)

与不同

new google.maps.LatLng("<?php echo $lat;?>,<?php echo $long;?>")

引号表示您正在将字符串文本传递给LatLng构造函数,但该构造函数不起作用。

new google.maps.LatLng(12.3456, 12.3456);

与不同

var latlng = "12.3456,12.3456";
new google.maps.LatLng(latlng);

前者将两个数字参数传递到函数中,这正是所期望的。后者将一个字符串传递到函数中,这是一个错误。