【问题标题】:Map breaks if I pass lat, lng as variable如果我将 lat、lng 作为变量传递,则地图会中断
【发布时间】:2012-01-10 07:03:53
【问题描述】:

这让我发疯了。使用 Google Maps v3 我正在使用 php 加载地图以确定纬度:

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。这似乎对这个问题没有任何影响。

【问题讨论】:

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


【解决方案1】:

这是因为

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

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

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

【讨论】:

    【解决方案2】:
    new google.maps.LatLng(12.3456, 12.3456);
    

    不一样

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-28
      • 1970-01-01
      相关资源
      最近更新 更多