Polyline拒绝在IE8上显示,在其他地方都可以使用

时间:2014-07-23 08:24:35

标签: javascript google-maps com internet-explorer-8

我使用COM公开的对象获取自定义.NET应用程序以呈现收集的GPS路径。除了运行IE8的Windows XP(通过.NET中的WebBrowser控件包装)以外,它在每个平台上都能很好地工作。

为了测试它,我已经编写了一个测试地图应用程序,该应用程序使用相同的对象模型但是缩小了,所以我可以进行调试,到目前为止,我遇到的IE脚本错误表明:

Line: 319 Char: 17 Error: String expected Code: 0 URL: about:blank

它指的是:

driverPathPoints[id] = [];

渲染路线的代码如下:

function ShowRoute(path, id, col) {

            try {
                clearRoutePaths(id);
            }
            catch (err) { }

            driverPathPoints[id] = [];
            driverDeliveryRouteMarkers[id] = [];

            var pointMarkers = [];
            var pointCounter = 0;
            for (var i = 0; i < path.Count(); i++) {
                driverPathPoints[id].push(new google.maps.LatLng(
                    path.item(i).lat, path.item(i).lng));

                if (pointCounter % 20 === 0) {
                    var marker = new google.maps.Marker({
                        position: new google.maps.LatLng(path.item(i).lat, path.item(i).lng),
                        title: path.item(i).deviceTime + " (" + Math.ceil(path.item(i).speed) + " MPH)",
                        infoParent: id,
                        infoIndex: i
                    });

                    pointMarkers.push(marker);
                }

                pointCounter++;
            }

            markerClusterer[id] = new MarkerClusterer(map, pointMarkers);

            var secondToLastLat = path.item(path.Count() - 2).lat;
            var secondToLastLng = path.item(path.Count() - 2).lng;

            var lastLat = path.item(path.Count() - 1).lat;
            var lastLng = path.item(path.Count() - 1).lng;

            var routeOptions = {
                path: driverPathPoints[id],
                strokeColor: col,
                strokeOpacity: 1.0,
                strokeWeight: 4,
                map: map,
                customIdent: id
            };

            var truckImage = 'http://ccgi.ablebox.plus.com/map_imgs/truck_' + calculateBearing(lastLat, lastLng, secondToLastLat, secondToLastLng) + '.png';

            var MarkerImage = new google.maps.MarkerImage(truckImage,
                new google.maps.Size(120, 120),
                new google.maps.Point(0, 0),
                new google.maps.Point(60, 60));

            var MarkerOption = {
                map: map,
                position: new google.maps.LatLng(path.item(path.Count() - 1).lat, path.item(path.Count() - 1).lng),
                icon: MarkerImage
            };

            var Marker = new google.maps.Marker(MarkerOption);
            driverDeliveryRouteMarkers[id].push(Marker);

            driverGPSDataLayer[id] = new google.maps.Polyline(routeOptions);

            driverGPSDataLayerCount++;
        }

有谁知道如何解决这个问题?之前,(开发时)我能够调试脚本。但我运行Windows 8并且只运行了XP SP3 VM,但无法对其进行调试。希望一些JS大师能指出我正确的方向。

非常感谢。

修改 我刚刚通过jslint查询了我的代码,并且没有任何问题&#39;。我尝试创建一个临时数组来填充,并将其分配给我正在使用的图层。没变。我已经尝试了!DOCTYPE html&#39;修复&#39;没变。

我不知道为什么它认为driverPathPoints[]应该是一个字符串。将继续前进。

1 个答案:

答案 0 :(得分:0)

怀疑它。是由于IE8不知道Long中的id数据类型是什么driverPathPoints[id] = []; (从.NET VB应用程序发送)。一旦我将它转换为字符串并将其作为InvokeScript的参数发送,它就在XP和IE8上非常高兴。

谢谢:)