我已成功在Chrome和Firefox中創建了一個顯示kmz文件,單個標記和用戶當前位置的地圖。加載的kmz文件基於從外部域使用php檢索到的信息。目前,當我使用IE 9加載頁面時,它會成功加載,我可以瀏覽地圖並使用其他控件。Google Maps API不會在Internet Explorer 9中刷新時加載
刷新時會出現問題。地圖不出來。頁面上的其他所有內容都會成功加載我認爲這可能與標記有關,但是當我將它刪除時,我仍然遇到同樣的問題。我還通過一個程序運行我的代碼來捕捉尾隨逗號和缺少分號。沒有!另一個奇怪的是IE9調試器沒有錯誤。
這裏是下面的代碼:
var map;
var cstage;
var cFor;
var KML = new Array();
var KML_def;
var FI;
var Fnum;
var OI;
var Onum;
var ObsV = new Array(); //observed values
var ObsT = new Array(); //observed time
var ForV = new Array(); //forecasted values
var ForT = new Array(); //forecasted time
var myKmlOptions = {
preserveViewport: true
};
//gets the current forecast
function getForecast() {
$.ajax({
type: "GET",
url: "/centralia/proxy.php",
data: { requrl: "http://water.weather.gov/ahps2/hydrograph_to_xml.php?gage=cenw1&output=xml" },
dataType: 'xml',
success: function(xml) { parseXml(xml); }
});
}
//parses the xml forecast data to get the observed and forecasted values
function parseXml(xml) {
var $xml = $(xml);
var i;
i = 1;
Fnum = 0; //forecasted
Onum = 0; //observed
FI = 0;
cFor = Date.now();
$xml.find("forecast").children("datum").each(function() {
ForV[i] = $(this).children("primary").text();
var year = $(this).children("valid").text().substr(0, 4);
var month = $(this).children("valid").text().substr(5, 2);
var day = $(this).children("valid").text().substr(8, 2);
var hour = $(this).children("valid").text().substr(11, 2);
var min = $(this).children("valid").text().substr(14, 2);
var sec = $(this).children("valid").text().substr(17, 2);
ForT[i] = new Date(Date.UTC(year, month - 1, day, hour, min, sec));
i = i + 1;
Fnum = Fnum + 1;
});
i = 0;
$xml.find("observed").children("datum").each(function() {
ObsV[i] = $(this).children("primary").text();
var year = $(this).children("valid").text().substr(0, 4);
var month = $(this).children("valid").text().substr(5, 2);
var day = $(this).children("valid").text().substr(8, 2);
var hour = $(this).children("valid").text().substr(11, 2);
var min = $(this).children("valid").text().substr(14, 2);
var sec = $(this).children("valid").text().substr(17, 2);
ObsT[i] = new Date(Date.UTC(year, month - 1, day, hour, min, sec));
i = i + 1;
Onum = Onum + 1;
});
cstage = ObsV[0];
cFor = ObsT[0];
//format time
var c_mins = cFor.getMinutes();
var c_Hrs = cFor.getHours();
var a_p = "";
if (c_Hrs < 12) {
a_p = "AM";
}
else {
a_p = "PM";
}
if (c_Hrs === 0) {
c_Hrs = 12;
}
if (c_Hrs > 12) {
c_Hrs = c_Hrs - 12;
}
c_mins = c_mins + "";
if (c_mins.length == 1) {
c_mins = "0" + c_mins;
}
//write out values to html div
$("#forcastVal").text(cstage.concat(" ft"));
$("#forcastDat").text(cFor.getMonth() + '/' + cFor.getDate() + '/' + cFor.getFullYear() + ' ' + c_Hrs + ':' + c_mins + ' ' + a_p);
$("#ForIndicator").text("(observed value)");
setMenu();
}
//initialize function
function initialize() {
var myOptions =
{
zoom: 8,
mapTypeId: google.maps.MapTypeId.HYBRID
// sets the type of map to be displayed
// HYBRID - displays a transparent layer of major streets on satellite images
// ROADMAP - displays a normal street map
// SATELLITE - displays satellite images
// TERRAIN - displays maps with physical features such as terrain
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
KML_def = new google.maps.KmlLayer('https://dl.dropboxusercontent.com/u/7710611/Flood_Poly_161ft.kml');
//add a marker for the station
var myLatLng = new google.maps.LatLng(46.711667, -122.9775);
var Marker_CenPoint = new google.maps.Marker({
position: myLatLng,
map: map,
title: 'Chehalis River at Centralia'
});
KML_def.setMap(map);
Marker_CenPoint.setMap(map);
Marker_CenPoint.info = new google.maps.InfoWindow({
content: '<a href="http://water.weather.gov/ahps2/hydrograph.php?wfo=sew&gage=cenw1" target="_blank">Chehalis River at Centralia</a>'
});
google.maps.event.addListener(Marker_CenPoint, 'click', function() {
Marker_CenPoint.info.open(map, Marker_CenPoint);
});
//initial kmz load (all kmz files)
KML[1] = new google.maps.KmlLayer('1.kml', myKmlOptions);
KML[2] = new google.maps.KmlLayer('2.kml', myKmlOptions);
KML[3] = new google.maps.KmlLayer('3.kml', myKmlOptions);
KML[4] = new google.maps.KmlLayer('4.kml', myKmlOptions);
KML[5] = new google.maps.KmlLayer('5.kml', myKmlOptions);
KML[6] = new google.maps.KmlLayer('6.kml', myKmlOptions);
KML[7] = new google.maps.KmlLayer('7.kml', myKmlOptions);
KML[8] = new google.maps.KmlLayer('8.kml', myKmlOptions);
KML[9] = new google.maps.KmlLayer('9.kml', myKmlOptions);
KML[10] = new google.maps.KmlLayer('10.kml', myKmlOptions);
KML[11] = new google.maps.KmlLayer('11.kml', myKmlOptions);
KML[12] = new google.maps.KmlLayer('12.kml', myKmlOptions);
KML[13] = new google.maps.KmlLayer('13.kml', myKmlOptions);
KML[14] = new google.maps.KmlLayer('14.kml', myKmlOptions);
//add current location marker
var myloc = new google.maps.Marker({
clickable: false,
icon: new google.maps.MarkerImage('//maps.gstatic.com/mapfiles/mobile/mobileimgs2.png',
new google.maps.Size(22, 22),
new google.maps.Point(0, 18),
new google.maps.Point(11, 11)),
shadow: null,
zIndex: 999,
map: map
});
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(pos) {
var me = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
myloc.setPosition(me);
});
}
else {
alert("Geolocation is not available");
}
//get current forecast
getForecast();
}
function twentyOFour(LNo, cell) {
//loop through all cells and change color
//for (k = 1; 4; k++) {
var x = document.getElementById("t1").getElementsByTagName("td");
x[0].style.backgroundColor = "#dcdcdc";
x = document.getElementById("t2").getElementsByTagName("td");
x[0].style.backgroundColor = "#dcdcdc";
x[1].style.backgroundColor = "#dcdcdc";
x[2].style.backgroundColor = "#dcdcdc";
x[3].style.backgroundColor = "#dcdcdc";
x = document.getElementById("t3").getElementsByTagName("td");
x[0].style.backgroundColor = "#dcdcdc";
x[1].style.backgroundColor = "#dcdcdc";
x[2].style.backgroundColor = "#dcdcdc";
x = document.getElementById("t4").getElementsByTagName("td");
x[0].style.backgroundColor = "#dcdcdc";
x[1].style.backgroundColor = "#dcdcdc";
x[2].style.backgroundColor = "#dcdcdc";
x[3].style.backgroundColor = "#dcdcdc";
x[4].style.backgroundColor = "#dcdcdc";
x[5].style.backgroundColor = "#dcdcdc";
//document.getElementById("forcastCont").innerHTML;
KML_def.setMap(null);
for (var i = 1; i < 15; i++) {
if (i == LNo) {
KML[i].setMap(map);
cell.style.backgroundColor = "#F0E68C";
}
else {
KML[i].setMap(null);
}
}
}
我懷疑這事做的代碼的時間,但我不知道。我所有的Google搜索都會顯示最初無法加載但會刷新的地圖。我遇到了完全相反的情況。任何幫助將不勝感激!我希望我給了足夠的細節,我是一名初學者程序員。謝謝。
如果您發佈鏈接到實際站點,調試這樣的問題就容易得多。 JSFiddle也可以工作。 –
我將網站添加到問題中。謝謝。 – user2917487