2012-07-06 9 views
6

Ustawiłem własny serwer OSM do dostarczania kafelków map do użycia w aplikacji. Do aplikacji używam OpenLayers i doszedłem do dziwnego problemu po przeniesieniu kodu z slippymap do mojej aplikacji. Zasadniczo używam tego samego kodu, a dla lokalnych kafelków ustawiam adres mojego serwera kaflowego.Kafelki mapy nie wyświetlają się (cały różowy) w Firefoksie przy użyciu OpenLayers i własnego serwera OSM

Problem polega na tym, że po przełączeniu się na warstwę lokalną widzę tylko różową warstwę mapy, ale atrybut src tagu obrazu ładuje rzeczywisty kafelek. Próbowałem z Firebugem usunąć różową warstwę, ale za nią nie ma obrazu! Kopiowanie adresu URL z atrybutu src tagu img otwiera kafelek jako obraz.

Próbowałem tego do Chrome i warstwa lokalna działa, także w IE 7,8,9. Problem jest tylko z FF i podejrzewam coś z OpenLayers, ale nie wiem co. Warstwa Mapnik działa i pokazuje kafelki we wszystkich przeglądarkach. Korzystanie z HTML5 przy okazji.

Wszelkie pomysły i wskazówki są mile widziane.

Odpowiedz

11

Istnieje inne rozwiązanie, które nie wymaga dodawania nagłówków CORS po stronie serwera. Trzeba zapewnić opcję „tileOptions” do konfiguracji warstwy, tak jak poniżej:

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

The OpenLayers docs dla Layer.OSM i Tile.Image powiedzieć, jak to zrobić, ale nie ma wzmianki o tym, że domyślna może spowodować problemy w Firefoksie.

+1

Zaznaczam wam odpowiedź jako zaakceptowaną, ponieważ bardziej lubię to rozwiązanie. Dzięki! – kode

4

Hm, prawie to odgadłem. Było to ustawienie nagłówka Apache, które umożliwia żądanie domeny dla dostarczonych zasobów. Oto więcej informacji na ciekawy https://developer.mozilla.org/en/http_access_control

Jest to ustawienie nagłówka, umieścić go w katalogu <>, < Location> lub pliku .htaccess i sprawdź, czy masz włączoną mod_headers.

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

Dla każdego, kto znalazł tę stronę z tym samym pytaniem ("Dlaczego dostaję tylko różowe płytki"), patrząc na stronę testową pod warunkiem, że pakiet z (http://switch2osm.org/serving-tiles/building- a-tile-server-from-packages /), dwie rzeczy powinny być odnotowane: 1) Zrób co Kode powiedział powyżej. 2) otwórz przykładową stronę (/var/osm/slippymap.html) w preferowanym edytorze, a następnie zmień domenę w adresie URL znajdującym się w wierszu 44. Ten krok jest konieczny tylko wtedy, gdy planujesz obejrzeć przykładową stronę na innym komputerze (ponieważ localhost nie będzie działał). Dzięki za pomoc Kode! – Axle

Powiązane problemy