サーバー側に vb.net を使用し、Google マップの .aspx ページに JavaScript を使用して Web ページを開発しています。Web ページは、特定の郡内のジョージア州のすべてのブロック グループをマップする大きな GIS であり、.js ファイル内の約 15 MB の純粋な [緯度、経度] ポイントです。chrome/firefox では、マップが読み込まれ、次にスクリプトが読み込まれ、スクリプトが定義するポリゴンを描画するためのコールバックがトリガーされ、ポリゴンがマップ上に描画されます。IE では、マップが読み込まれ、スクリプトが読み込まれると、コンソールSCRIPT14: error -2147024882
にオンライン 1 が表示されます。マップ上のポリゴン以外のすべてが正しく表示されます。.js ファイルの構造は、いくつかの変数のみの宣言です。
var allPolys = [
[
//poly1 points
[x1,y1],
[x2,y2],
...
],
[
//next poly
[x1,y1],
...
]
]
^^ は、各ポリゴンが .js でどのように定義されているかです。すべてのポイントが単一の配列内にあるため、これはサイズの問題ですか?
マッピング コード:
function drawPolys() {
for (var i = 0; i < allTracts.length; i++) {
var tract = "new google.maps.Polygon({ strokeWeight: 0.7, path: [";
for (var j = 0; j < allTracts[i].length; j++)
tract += " new google.maps.LatLng(" + allTracts[i][j][0] + "," + allTracts[i][j][1] + "),";
tract = tract.substring(0, tract.length - 1) + "], map: map });";
eval(tract);
}
//this is all for other 'multipolygons' that are in some maps
var colors = ['red', 'blue', 'green', 'orange', 'yellow', 'white'];
for (var i = 0; i < multiPolys.length; i++) {
for (var j = 0; j < multiPolys[i].length; j++) {
var subTract = "new google.maps.Polygon({ strokeWeight: 1.5, strokeColor: '" + colors[i % colors.length] + "', fillColor: '" + colors[i % colors.length] + "', path: [";
for (var k = 0; k < multiPolys[i][j].length; k++)
subTract += " new google.maps.LatLng(" + multiPolys[i][j][k][0] + "," + multiPolys[i][j][k][1] + "),";
subTract = subTract.substring(0, subTract.length - 1) + "], map: map });";
eval(subTract);
}
}
}
Chrome では、ページが美しく読み込まれます。
edit : eval() のない新しいマッピング関数
function drawPolys() {
for (var i = 0; i < allTracts.length; i++) {
var path = [];
for (var j = 0; j < allTracts[i].length; j++)
path.push(new google.maps.LatLng(allTracts[i][j][0],allTracts[i][j][1]));
new google.maps.Polygon({ strokeWeight: 0.7, path: path, map: map });
}
var colors = ['red', 'blue', 'green', 'orange', 'yellow', 'white'];
for (var i = 0; i < multiPolys.length; i++) {
var path = [];
for (var j = 0; j < multiPolys[i].length; j++) {
path[j] = [];
for (var k = 0; k < multiPolys[i][j].length; k++)
path[j].push(new google.maps.LatLng(multiPolys[i][j][k][0],multiPolys[i][j][k][1]));
}
new google.maps.Polygon({ strokeWeight: 1.5, strokeColor: colors[i % colors.length], fillColor: colors[i % colors.length], paths: path, map: map });
}
}