2012-11-26 3 views
1

웹 사이트 용으로 만든 맞춤형지도 타일이있는 맞춤형지도가 있습니다. 이러한지도 타일을 업데이트하고 사이트에 배포 할 때마다 사용자가 이전 타일의 캐시를 지워서 대신 새 타일을 다운로드해야합니다.새지도 타일을 배포하고 강제로 사용자 캐시를 지우려면 어떻게해야합니까?

지도 타일은 JavaScript로로드되기 때문에 단순히 SHIFT-Refresh로 사용자가 새 파일을 가져올 수 없습니다.

내가 생각할 수있는 유일한 방법은 타일이로드되는 폴더 이름을 변경하는 것입니다. 뭔가 같이 :

tiles-20121125 <--- todays date 

그래서 타일이 업데이트 될 때마다, 나는 단순히 새로운 타일을 다운로드 방문자를 강제로 새 이름으로 폴더 이름을 변경합니다.

더 좋은 방법이 있습니까? Google지도 v3 API에 기본 제공되는 기능은 무엇인가요?

+0

'.... tile.png? r ='+ Math.random();을 사용합니다. (매번 강제 재 장전). – Marcelo

+0

고마워요.하지만 성능을 극대화하고 대역폭을 최소화하기 위해 내 방문자가 타일을 99 % 캐시해야합니다. 새 타일을 추가 할 때만 새 타일을 가져와야합니다. –

답변

2

브라우저는 요청 된 URL (ajax 캐시는 물론)을 기반으로 이미지 데이터를 캐시합니다. Google Maps API는이를 수행 할 수있는 방법을 제공하지 않습니다.

가장 쉬운 방법은 버전을 쿼리 매개 변수로 추가하는 것입니다.

function getTileUrl(point, number) { 
    return "http://your.server.com/tiles/" + point.x + "_" + point.y + ".png?v=20121125" 
} 

그런 다음 Google지도 API는 URL에서 이미지 데이터를로드합니다. 이미지를로드 할 수있는 메커니즘이 될 수 있습니다 그런

var img = new Image(); 
img.src = tile_url; 

뭔가. (실제로 Google Maps API는 최근 Image 대신 캔버스 태그를 사용합니다.)

+0

아 쿼리 매개 변수는 물론 있습니다. 나는 항상'js'와'css' 파일로 이것을합니다. 타일을 가지고 그렇게하는 것에 대해서 생각조차하지 않았습니다. 감사! –

관련 문제