2012-07-06 7 views
6

Ho impostato il mio server OSM per fornire le tile della mappa da utilizzare in un'applicazione. Per l'applicazione utilizzo OpenLayers e ho riscontrato uno strano problema quando ho trasferito il codice da slippymap alla mia applicazione. Fondamentalmente uso lo stesso codice e per i tiles locali ho impostato l'url del mio server tile.Le tessere mappa non vengono mostrate (tutte in rosa) in Firefox utilizzando OpenLayers e il proprio server OSM

Il problema è che quando si passa al livello locale vedo solo il livello rosa della mappa, ma l'attributo src del tag immagine carica il riquadro effettivo. Ho provato con Firebug per rimuovere il livello rosa, ma dietro non c'è immagine lì! Copiando l'url dall'attributo src del tag img si apre la tessera come immagine.

Ho provato questo a Chrome e il livello locale funziona, anche in IE 7,8,9. Il problema è solo con FF e sospetto qualcosa con OpenLayers, ma non sono sicuro di cosa. Il livello Mapnik funziona e mostra le tessere su tutti i browser. Usando HTML5 a proposito.

Qualsiasi idea o suggerimento è apprezzato.

risposta

11

C'è un'altra soluzione che non richiede l'aggiunta di intestazioni CORS lato server. È necessario fornire un'opzione "tileOptions" al config livello, in questo modo:

var layer = new OpenLayers.Layer.OSM("layer name", [urls], { 
    "tileOptions": { 
     "crossOriginKeyword": null 
    } 
}); 

I OpenLayers Documenti per Layer.OSM e Tile.Image dite come fare questo, ma non c'è alcuna menzione del fatto che il valore predefinito può causare problemi in Firefox.

+1

Sto marcando la tua risposta come accettata, dal momento che mi piace di più la soluzione. Grazie! – kode

4

Hm, ho quasi indovinato. Era un'impostazione dell'intestazione di Apache che abilita la richiesta interdominio per le risorse fornite. Qui è più informazioni per i curiosi https://developer.mozilla.org/en/http_access_control

Questa è l'impostazione di intestazione, includerlo in < Directory>, < Posizione> o il file .htaccess e verificare che si è mod_headers abilitato.

Header set Access-Control-Allow-Origin * 
+1

Per chiunque altro abbia trovato questa pagina con la stessa domanda ("Perché ottengo solo riquadri rosa") mentre osservo la pagina di test fornita il pacchetto da (http://switch2osm.org/serving-tiles/building- a-tile-server-from-packages /), due cose dovrebbero essere annotate: 1) Fai quello che Kode ha detto sopra. 2) apri la pagina di esempio (/var/osm/slippymap.html) nell'editor preferito e cambia il dominio nell'URL trovato sulla linea 44. Questo passaggio è necessario solo se hai intenzione di guardare la pagina di esempio su un altro computer (come localhost non funzionerà). Grazie per l'aiuto Kode! – Axle

Problemi correlati