-1
這下面的代碼,如果我點擊第一個複選框&然後單擊其他兩個選擇&取消選擇工作正常。 看來主要的問題是if(document.getElementById('mapCheck').checked)
- 這一行。Google地圖標記不可見。爲什麼?
如果我刪除此行則標記將只添加到地圖,但基於複選框的檢查屬性不能被刪除(顯然是因爲不會再有,如果其他條件來檢查選中複選框屬性)。
<!DOCTYPE html>
<html>
<head>
<script
src="http://maps.googleapis.com/maps/api/js">
</script>
<!-- For dynamic table -->
<style>
table, th, td {
border: 1px solid black;
border-collapse: collapse;
}
th, td {
padding: 5px;
text-align: center;
}
table#appraiserTable tr:nth-child(even) {
background-color: #eee;
}
table#appraiserTable tr:nth-child(odd) {
background-color:#fff;
}
table#appraiserTable th {
background-color: black;
color: white;
}
</style>
<script>
var lat=[10,20,30,40];
var lon=[10,20,30,40];
var appraiserName=["A1","A2","A3","A4"];
var appraiserLocation=["L1","L2","L3","L4"];
document.write("<table id=appraiserTable border=1 style=margin-top:10px; margin-left:10px;>")
document.write("<tr><th>Select</th><th>Appraiser Name</th><th>Location</th></tr>");
for (row=0; row<lat.length; row++) {
document.write("<tr>")
for (col=1; col<=3; col++) {
if(col==1)
document.write("<td><input type='checkbox' id='mapCheck' name='myTextEditBox' value='checked' onchange='showOrHideMarkers("+lat[row]+","+lon[row]+");'/></td>")
if(col==2)
document.write("<td width='200'>"+appraiserName[row]+"</td>")
if(col==3)
document.write("<td width='350'>"+appraiserLocation[row]+"</td>")
}
document.write("</tr>")
}
document.write("</table>")
var map;
var markers=[];
//load all markers to an array
function loadMarkers(){
for(var i=0;i<lat.length;i++)
{
var markerCenter = new google.maps.LatLng(lat[i],lon[i]);
var marker=new google.maps.Marker({
position: markerCenter,
});
markers.push(marker);
}
}
// Shows or Hides markers currently in the array.
function showOrHideMarkers(latitude,longitude) {
var index;
for(var i=0;i<lat.length;i++)
{
if(lat[i]==latitude && lon[i]==longitude)
{
index=i;
break;
}
}
//User selects the check box to see the marker in Google Map
if(document.getElementById('mapCheck').checked)
{
console.log(latitude+" : "+longitude+" : "+index)
markers[index].setMap(map);
}
//User unselects the checkbox not to see the marker
else
{
console.log(latitude+" : "+longitude+" : "+index)
markers[index].setMap(null);
}
}
var myCenter=new google.maps.LatLng(51.508742,-0.120850);
//Initializing the Map
function initialize()
{
var mapProp = {
center:myCenter,
zoom:5,
mapTypeId:google.maps.MapTypeId.ROADMAP
};
map=new google.maps.Map(document.getElementById("googleMap"),mapProp);
loadMarkers();
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<style>
div.absolute {
position: absolute;
top: 10px;
right: 10px;
width: 200px;
height: 100px;
border: 3px solid #8AC007;
}
</style>
</head>
<body>
<div id="googleMap" style="width:500px;height:380px;" class="absolute"></div>
</body>
</html>
太謝謝你了。有用。 –
如果我在標記中添加動畫(即在'loadMarkers'函數'marker'對象中添加'animation:google.maps.Animation.BOUNCE')。 然後,如果我選擇複選框並取消選擇它並再次選擇它,動畫停止工作。你有什麼想法,爲什麼? –
只需將marker [index] .setAnimation(google.maps.Animation.BOUNCE);在標記前面[index] .setVisible(true); –