如果我将lat,lng作为变量传递,则映射中断

时间:2012-01-10 07:03:54

标签: php javascript google-maps-api-3

这让我疯了。使用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),

地图只显示蓝屏并且已损坏(没有缩放或控件或任何内容)。控制台日志和源代码看起来正确生成参数。关于可能发生的事情的任何想法?

我在initialize()上确实有body但我已将其移至我脚本中的(document).ready。这似乎没有对这个问题产生任何影响。

2 个答案:

答案 0 :(得分:5)

这是因为

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

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

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

答案 1 :(得分:4)

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

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

前者将两个数字参数传递给函数,这是预期的。后者将一个字符串传递给函数,这是一个错误。