javascript - 如何检测谷歌地图标记图像无法加载以提供默认图像?

标签 javascript google-maps google-maps-api-3

遵循 Google Maps API 中的示例代码(为简洁而 chop )如何检查标记图像加载失败并使用不同/默认图像?

var image = {
  url: 'https://broken.url.com/no-such-image.png',
  size: new google.maps.Size(20, 32),
  origin: new google.maps.Point(0, 0),
  anchor: new google.maps.Point(0, 32)
};

var marker = new google.maps.Marker({
  position: {lat: -33.890542, lng: 151.274856},
  map: map,
  icon: image,
  title: 'Marker demo',
  zIndex: 1
});

最佳答案

您可以尝试使用javascript来加载图像。如果可以加载(触发onload事件),则添加带有图像的标记,否则(触发onerror事件)回退到其他内容(例如没有图像的默认标记) :

var image = new Image();
var image_url = "https://broken.url.com/no-such-image.png";
image.onload = function () {
   console.info("Image loaded, adding marker with image !");
   var marker = new google.maps.Marker({
        position: {lat: -33.890542, lng: 151.274856},
        map: map,
        icon: {
             url: image_url,
             size: new google.maps.Size(20, 32),
             origin: new google.maps.Point(0, 0),
             anchor: new google.maps.Point(0, 32)
        },
        title: 'Marker demo',
        zIndex: 1
   });
}
image.onerror = function () {
   console.error("Cannot load image, adding marker without image");
   var marker = new google.maps.Marker({
      position: {lat: -33.890542, lng: 151.274856},
      map: map,
      title: 'Marker demo',
      zIndex: 1
   });
}
image.src = image_url;

关于javascript - 如何检测谷歌地图标记图像无法加载以提供默认图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39206804/

相关文章:

javascript - 如何删除 javascript 中的自定义事件?

javascript - 拆分字符串,得到后半部分

ios - 使用 Swift 3 在自定义 View 中使用 Google map 绘制多段线

javascript - Vercel next.js 环境变量不起作用

javascript - Google Maps API v3 信息窗口关闭事件/回调?

google-maps-api-3 - 如何阻止 Google map 以插入的信息窗口为中心

javascript - 数组的长度属性如何在 javascript 中工作?

javascript - 有没有更好的方法在 javascript 的 forEach 循环中填充数组?

javascript - 谷歌地图 API v3 设置标记并获取点

google-maps - 如何在Google Maps v3中更改路线的颜色