这让我疯了。使用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
。这似乎没有对这个问题产生任何影响。
答案 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);
前者将两个数字参数传递给函数,这是预期的。后者将一个字符串传递给函数,这是一个错误。