마커 위치를 표시하는 XML 파일의 데이터를 파싱 중이며 그 부분은 훌륭하게 작동합니다. XML 파일의 정보가있는 HTML을 통해 정보 상자에 정보를 추가하려고합니다. 이것이 보이는 방법입니다.XML에서 Google지도 V3의 infobox에 HTML을 표시하는 방법
http://www.mesquiteweather.net/images/Annual%20Fatal%20Tornado%20Summaries.png
하지만 내 테스트 페이지로 이동하여 마커를 클릭하면 그것은 그런 식으로 표시되지 않습니다.
http://www.mesquiteweather.net/xml/googlemapkt.html
이
내가이 정보 상자를 생산하기 위해 노력하고 있음을 가지고있는 코드입니다.<script type="text/javascript">
var customIcons = {
"-1": "/images/icons/mm_1_white.png",
"0": "/images/icons/mm_20_white.png",
"1": "/images/icons/mm_20_orange.png",
"2": "/images/icons/mm_20_green.png",
"3": "/images/icons/mm_20_blue.png",
"4": "/images/icons/mm_20_red.png",
"5": "/images/icons/mm_20_black.png"
};
var lineColor = {
"-1": "#FFFFFF",
"0": "#FFFFFF",
"1": "#FFA500",
"2": "#008000",
"3": "#0000FF",
"4": "#FF0000",
"5": "#000000"
};
var infowindow = new google.maps.InfoWindow();
// start here
var summary_html = "";
var csummary_html = "";
var total_html = "";
var gmarkers = [];
var i = 0;
var j = 0;
var thisurl = '2013.xml';
// this is called from xml processing loop below
function createMarker(point, yrnum, dt, ef, tm, dead, h, m, o, v, p, unk, loc, st, watch) {
var marker = new google.maps.Marker({position: point, icon: customIcons[ef]});
// this makes the info bubble text/info
var yy = dt.substr(-4);
if (ef == "-1") {
ef = " Not rated yet";
}
var html = "<b>" + yy + " Killer Tornado #" + yrnum + "</b> <br/>" + dt + " " + tm + " CST<br/>";
html += "Fatalities: " + dead + ", EF" + ef + "<br/>";
html += "County, State: " + loc + ", " + st + "<br/>";
html += "Home:" + h + " MHome:" + m + " Outside:" + o + " Bldg:" + p + " Vehicle:" + v + " Unk:" + unk + "<br/>";
var ww = watch.substring(2,6);
// alert(yy);
if (watch != "NONE" && yy == 2013) { // update to current yy and change other links below!!!
link = '<a href="http://www.spc.noaa.gov/products/watch/ww' + ww + '.html" target="_blank">' + ww + '</a>';
html += "In SPC Watch# " + link + " (Click to open SPC watch page)<br/>";
}
if (watch != "NONE" && yy >= 2004 && yy <= 2012) { // ww archive back to 2004
link = '<a href="http://www.spc.noaa.gov/products/watch/' + yy + '/ww' + ww + '.html" target="_blank">' + ww + '</a>';
html += "In SPC Watch# " + link + " (Click to open SPC watch page)<br/>";
}
if (watch != "NONE" && yy < 2004) { // No archive!
//link = '<a href="http://www.spc.noaa.gov/products/watch/' + yy + '/ww' + ww + '.html">' + ww + '</a>';
html += "In SPC Watch# " + ww + "<br/>";
}
if (watch == "NONE") {
html += "No Watch in Effect.<br/>";
}
function getInfoWindowEvent(marker, html) {
infowindow.setContent(html);
infowindow.open(map, marker);
}
google.maps.event.addListener(marker, 'click', function() {
infowindow.close();
getInfoWindowEvent(marker, html);
});
}
// This function picks up the click and opens the corresponding info window
function myclick(i) {
google.maps.event.trigger(gmarkers[i], 'click');
}
function initialize() {
var myLatlng = new google.maps.LatLng(32.775833, -96.796667);
var myOptions = {
panControl: false,
zoom: 4,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL,
position: google.maps.ControlPosition.RIGHT_TOP
},
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
function MyLogoControl(controlDiv) {
controlDiv.style.padding = '5px';
var logo = document.createElement('IMG');
logo.src = 'http://www.mesquiteweather.net/images/watermark_MW_GMap.png';
logo.style.cursor = 'pointer';
controlDiv.appendChild(logo);
google.maps.event.addDomListener(logo, 'click', function() {
window.location = 'http://www.mesquiteweather.net';
});
}
var logoControlDiv = document.createElement('DIV');
var logoControl = MyLogoControl(logoControlDiv);
logoControlDiv.index = 0; // used for ordering
map.controls[google.maps.ControlPosition.TOP_LEFT].push(logoControlDiv);
downloadUrl(thisurl, function(data) {
var markers = data.documentElement.getElementsByTagName("fatalities");
for (var i = 0; i < markers.length; i++) {
var yrnum = markers[i].getAttribute("yrnum");
var dt = markers[i].getAttribute("dt");
var tm = markers[i].getAttribute("time");
var ef = markers[i].getAttribute("ef");
var st = markers[i].getAttribute("st");
var loc = markers[i].getAttribute("location");
var watch = markers[i].getAttribute("watch");
var dead = markers[i].getAttribute("deaths");
var h = markers[i].getAttribute("h");
var m = markers[i].getAttribute("m");
var o = markers[i].getAttribute("o");
var v = markers[i].getAttribute("v");
var p = markers[i].getAttribute("p");
var unk = markers[i].getAttribute("unk");
var point = new google.maps.LatLng(parseFloat(markers[i].getAttribute("slat")),
parseFloat(markers[i].getAttribute("slon")));
var epoint = new google.maps.LatLng(parseFloat(markers[i].getAttribute("elat")),
parseFloat(markers[i].getAttribute("elon")));
var marker = createMarker(point, yrnum, dt, ef, tm, dead, h, m, o, v, p, unk, loc, st, watch);
marker.setMap(map);
var polyline = new google.maps.Polyline({
path: [point, epoint],
strokeColor: lineColor[ef],
strokeOpacity: 0.8,
strokeWeight: 2
});
polyline.setMap(map);
}
});
}
function createMarker(point, yrnum, dt, ef, tm, dead, h, m, o, v, p, unk, loc, st, watch) {
var marker = new google.maps.Marker({position: point, icon: customIcons[ef]});
google.maps.event.addListener(marker, "click", function() {
if (infowindow) infowindow.close();
infowindow = new google.maps.InfoWindow({content: loc});
infowindow.open(map, marker);
});
return marker;
}
</script>
나는이 말에 마지막 기능을 함께 할 수있는 뭔가가 생각하지만 난 그게 옳지 않다 알고 있기 때문에 나는이 붙어 곳은 내가 모든 것을 시도했다. 나는 새로운 Gmaps를 배우는 과정에서 아직 수년 동안 사용하지 않았기 때문에 아직도입니다.
어떤 제안이나 조언도 좋을 것입니다.
- 고마워요!
HTML은 이미 var html로 코드의 시작 부분에 서식을 지정했지만 표시 방법이 달라 붙어 있습니다. 시도한 infowindow = new google.maps.InfoWindow ({content : html}); 그러나 아무것도 보여주지 않는다. HTML에 포함 된 정보는 여기 XML 파일에서 가져옵니다. http://www.mesquiteweather.net/xml/2013.xml – Texan78
업데이트 된 답변보기, createMarker 함수의 두 복사본이 있습니다. 사용한 브라우저에 따라 달라집니다 ... – geocodezip
예, 맞습니다. 마지막으로 createMarker 함수를 사용했기 때문에 생각했습니다.지도를 표시하지 않으면 제거 할 수 없습니다. 일부를 추가했습니다. 당신이 제공하는 코드에 HTML이 잘 작동합니다. 나는 // alert (yy) 뒤에 마지막 부분을 추가 할 수 없다; 효과없는 시계 없음. 편집 : 알겠습니다. 당신의 도움을 주셔서 감사합니다! – Texan78