2016-06-08 71 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