Рисованные полилинии не отображаются на карте - PullRequest
0 голосов
/ 21 декабря 2011

Я декодирую закодированный путь и использую этот декодированный путь, чтобы нарисовать ломаную линию на карте Google. Однако по какой-то причине не видно никакой линии. Есть идеи, что когда не так?

Код JS

encoded_path = 'axwaGtbcqL`BgArBmAjCcBlBcCnBeChB_BrAmAxByBjCoCkAqBmByCu@qA[i@~BmAdAq@FEzAqAvAsA|@{@DCr@{@DIjAuA|@cAz@}@~AeB\[LZxAjDJINM|AkAxAxCfAw@g@jAeBpEOr@Ox@CTeAlMM~AYhDc@pE_AtHGj@m@`Gm@dHa@hFaAbM_AfJ]jDAlA{Hhv@eAdFy@bCcBpEeBzDyArDu@`E_AnFs@|Fq@fGKtKaEqCgBmB_GmFcJaM}@nBg@BbA}CpAaEvAoEnGyOvDuPDSPYAIIMMMGOMMIIKKKQIMIKIKa@gAQ_@Q[CCY_@OSQYQQOOSMSOa@]g@g@UWSUYm@Uk@]qAKe@Ia@I_@Iy@Es@C_AAw@A]Ca@G[Qy@GSKa@M]M_@Qa@M]IOGKQSGIIG}@w@{AgAiAaAWSUOWOQIMEKCICOGMCKEQC_DuA?GbByB\_@~GaIxCgDl@s@bBkBnBcBzCqC`Ai@pCmA^mAd@qA';

decoded_path = google.maps.geometry.encoding.decodePath(encoded_path);

console.log(decoded_path);

var polyOptions = {
            strokeColor: "#970E04" , 
            strokeOpacity: 1.0 , 
            strokeWeight: 2 , 
            path: decoded_path , 
            clickable: false,
            map: map
    }
polyline = new google.maps.Polyline(polyOptions);

Дополнительная информация

Следующий код установит начальный вид карты в том месте, где должна быть нарисована ломаная линия: Северный Кембридж, Массачусетс. Карта инициализируется в <body onload="initialize();">, поэтому карту следует инициализировать до рисования ломаной линии. НЕ ВЕРНО !! Смотри ниже

function initialize() {
    var center_latlng = new google.maps.LatLng(42.39902115,-71.12902832);
    var options = {
        zoom: 13,
        minZoom: 11,
        maxZoom: 19,
        center: center_latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), options);
}

Дополнительная информация # 2

Я создал кнопку, которая создает ломаную линию при нажатии. Таким образом, я могу быть уверен, что ломаная линия создается после инициализации карты. Нажатие на эту кнопку вызывает появление полилинии !!! Как загрузить полилинию после инициализации карты?

$(function() {

    $("#button").click(function() {
        polyline.setPath(decoded_path);
        polyline.setMap(map);
    });

});

1 Ответ

0 голосов
/ 21 декабря 2011

Попробуйте использовать google.maps.event.addDomListener, например,

<html>
<head>
    ...
    <script type="text/javascript">
        /**
            * Called on the intiial page load.
        */
        function init() {
            var map = new google.maps.Map(document.getElementById('map'), {
                ...
            });
            ...
            var line = new google.maps.Polyline({
                ...
                map: map
            });
        }
        // Register an event listener to fire once when the page finishes loading.
        google.maps.event.addDomListener(window, 'load', init);
    </script>
</head>
<body>
    <div id="map"></div>
</body>

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