2016-06-08 142 views
5

我有一个谷歌地图实现,其中我使用网上的地图块。但是,如果我走出瓷砖区域,它将引发错误,因为它无法找到图像..我如何使if语句在不存在时返回null?检查图像中是否存在图像

我在想什么了这一点,因为我包括jQuery的:

$.get(url) 
.done(function() { 
    // exists code 
    return `http://www.blablabla.com/grey-tiles/${zoom}/${coord.x}/${coord.y}.png` 
}).fail(function() { 
    // not exists code 
    return null; 
}) 

但是这不是为我工作,这是我的组件的构造函数:

constructor(){ 
this.imageMapOptions = { 
    getTileUrl: (coord: ImageMapTypeCoord, zoom: number) => { 
    return `http://www.blablabla.com/grey-tiles/${zoom}/${coord.x}/${coord.y}.png` 
    }, 
    tileSize: { height: 256, width: 256 }, 
    maxZoom: 18, 
    minZoom: 16, 
    radius: 1738000, 
    name: 'Beeksebergen' 
};  
} 
+0

您不能从异步调用返回。 – epascarello

回答

2

像这样的东西可能会奏效:

var url = 'https://example.com/image.png'; 
return new Promise((resolve, reject) => { 
    return $('<img>') 
    .on('error', reject.bind(null, url)) 
    .on("load", resolve.bind(null, url)) 
    .appendTo(document.body) 
    .css({ "position": "absolute", top: -9999, left: -9999 }) 
    .on("error load", $.fn.remove) 
    .attr("src", url); 
}); 
+0

如何在构造函数中实现这个? – Sreinieren

+0

@Beginnerprogrammer问题是你需要返回一个promise,然后使用'getTileUrl()。done(url => ...)'。由于检查网址是异步的。 – andlrc

+0

你能编辑我可以使用的答案吗? – Sreinieren