【发布时间】:2016-06-07 00:35:56
【问题描述】:
我正在尝试检查图像是否存在,以便我可以相应地调整我的 contentString。但是,当我尝试这样做时,地图上只显示了一个图钉(第一个图钉)。
var checkins = <?php echo $json; ?>;
function imageExists(url, callback) {
var img = new Image();
img.onload = function() { callback(true); };
img.onerror = function() { callback(false); };
img.src = url;
}
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: {lat: 39.8282, lng: -98.5795}
});
setMarkers(map);
}
function setMarkers(map) {
var infowindow = new google.maps.InfoWindow({
content: ""
});
for (var i = 0; i < checkins.length; i++) {
var checkin = checkins[i];
var marker = new google.maps.Marker({
position: {lat: parseFloat(checkin[2]), lng: parseFloat(checkin[3])},
map: map,
title: checkin[1]
});
var imageUrl = 'http://rjbogz.ddns.net/pictures/'+checkin[0]+'.jpg';
imageExists(imageUrl, function(exists) {
if (exists){
contentString = '<b>'+checkin[6]+'</b><br><b>'+checkin[4]+'</b> by <b>'+checkin[5]+'</b><br>At <b>'+checkin[1]+'</b><br><img src="pictures/'+checkin[0]+'.jpg" style="width:300px;height:300px;">';
bindInfoWindow(marker, map, infowindow, contentString);
} else {
contentString = '<b>'+checkin[6]+'</b><br><b>'+checkin[4]+'</b> by <b>'+checkin[5]+'</b><br>At <b>'+checkin[1]+'</b>';
bindInfoWindow(marker, map, infowindow, contentString);
}
});
}
}
function bindInfoWindow(marker, map, infowindow, description) {
marker.addListener('click', function() {
infowindow.setContent(description);
infowindow.open(map, this);
});
}
正如您在imageExists 函数中看到的那样,我尝试添加一个检查以查看图像是否存在,但它只在地图上绘制了一个图钉。该网站目前发布到http://rjbogz.ddns.net/map.php,如果您想看看它的样子。如果您单击百慕大中的图标(没有与之关联的图像文件),我想要修复的一个示例是。
【问题讨论】:
-
您在控制台中看到了哪些 JavaScript 错误?请提供一个 Minimal, Complete, Tested and Readable example 来证明您的问题。
-
不幸的是,我在 javascript 中没有收到任何错误。它只是没有正确显示。上面是有效的代码(目前在网站上),下面的两部分分别是我替换和替换它的代码,以使其只放置第一个引脚。
-
请提供一个Minimal, Complete, Tested and Readable example 来证明您的问题,包括任何必需的数据/HTML/CSS。
-
你在 JS Fiddle 中有什么东西吗?我所在的地方无法访问您的域。
-
很遗憾没有。该代码包含一些允许其运行所需的 php。我还没有完全弄清楚 jsfiddle 可以使用它。
标签: javascript google-maps google-maps-api-3 file-exists