2016-06-08 26 views
5

Ho un'implementazione di google maps in cui utilizzo i riquadri delle mappe che si trovano online. Ma se esco dall'area delle tessere mi commettono errori perché non riesco a trovare quelle immagini .. Come faccio a fare un'istruzione if per restituire null quando non esistono?Verifica se l'immagine esiste in dattiloscritto

Quello che stavo pensando era di questo perché includo 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; 
}) 

ma questo non sta funzionando per me questo è il costruttore della mia componente:

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

Non è possibile tornare da una chiamata asincrona. – epascarello

risposta

2

Qualcosa di simile potrebbe funzionare :

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

come posso implementarlo nella funzione di costruzione? – Sreinieren

+0

@Beginnerprogrammer Il problema è che è necessario restituire una promessa e quindi utilizzare 'getTileUrl(). Done (url => ...)'. Dal momento che il controllo dell'url è asincrono. – andlrc

+0

Puoi modificare la tua risposta che posso usare? – Sreinieren