0

我正在制作一个需要显示的谷歌地图:KML(平面图)一条折线,它应该从 GET 响应中获取其坐标,每 5 秒。我希望折线使用来自 RESTful API 的新坐标进行自我更新。这是代码[更新]:

        var FlightPath1 = []
            $(document).ready(function() {
            var BASE_URL = "https://its.navizon.com/api/v1/sites/"  //Do not change this
            SITE_ID = "1001"  // Your site ID here
            MAC_add = "00:1E:8F:92:D0:56"  //Mac address of the device to track
            USERNAME = "demo@navizon.com"  // Your username
            PASSWORD = ""  // Your password
            var Path1=new google.maps.Polyline({
                path:FlightPath1,
                strokeColor:"#F020FF",
                strokeOpacity:0.8,
                strokeWeight:2
                });
// Send the request
            jQuery.support.cors = true;   // Enable cross-site scripting
function makeCall() {
    $.ajax({
        type: "GET",
        url: BASE_URL + SITE_ID + "/stations/" + MAC_add + "/",
        beforeSend: function(jqXHR) {
        jqXHR.setRequestHeader("Authorization", "Basic " + Base64.encode(USERNAME + ":" + PASSWORD));
        },

        success: function(jimmi) {
            // Output the results
            if (typeof jimmi === "string") {
                jimmi = JSON.parse(jimmi);
            }
            //Display the results
                FlightPath1.push("new google.maps.LatLng(" + jimmi.loc.lat + "," + jimmi.loc.lng + "),");
                var mapOptions = {
                                    zoom: 19,
                                    center: new google.maps.LatLng(jimmi.loc.lat,jimmi.loc.lng),
                                    mapTypeId: google.maps.MapTypeId.ROADMAP
                                };

                                map = new google.maps.Map(document.getElementById('map-canvas'),
                                mapOptions);

                                var SanDiegoKML = new google.maps.KmlLayer({
                                url: 'https://s3.amazonaws.com/navizon.its.fp/1001/05w0kyw829_a.kml'
                                });
                                SanDiegoKML.setMap(map);
                                google.maps.event.addDomListener(window, 'load', jimmi);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('Error');
        }
    });
    window.setTimeout(makeCall, 5000); //run the script each 5000 milliseconds
}
makeCall();
})

但我什么也没发生。而且我也没有错误。有人可以帮我吗?谢谢..

4

1 回答 1

0

两个问题:

  1. 必要的 varPath1是 内部和私有的initialize(),因此超出了完全不同范围内的 ajax 成功函数的范围。

  2. ajax 成功函数除了将从响应中派生的字符串推入数组之外,什么也不做。这样做本身不会影响折线。

先修复 (1),然后修复 (2)。

于 2013-10-08T21:53:42.767 回答