我使用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[]
应该是一个字符串。将继续前进。
答案 0 :(得分:0)
怀疑它。是由于IE8不知道Long
中的id
数据类型是什么driverPathPoints[id] = [];
(从.NET VB应用程序发送)。一旦我将它转换为字符串并将其作为InvokeScript
的参数发送,它就在XP和IE8上非常高兴。
谢谢:)