Карта ломается, если я передам lat, lng как переменную - PullRequest
1 голос
/ 10 января 2012

Это сводит меня с ума. Используя 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

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

на картах просто изображен синий экран, и он сломан (без масштабирования, элементов управления или чего-либо еще). Журнал и источник консоли выглядят так, как будто они правильно генерируют параметры. Любые идеи о том, что может происходить?

У меня было initialize() на body, но я переместил его в (document).ready в моем сценарии. Это, похоже, не имеет никакого значения для этой проблемы.

Ответы [ 2 ]

5 голосов
/ 10 января 2012

Это потому что

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

не совпадает с

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

Кавычки означают, что вы передаете строковый литерал конструктору LatLng, который не работает.

4 голосов
/ 10 января 2012
new google.maps.LatLng(12.3456, 12.3456);

не совпадает с

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

Первый передает два числовых параметра в функцию, что и ожидается. Последний передает одну строку в функцию, что является ошибкой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...