저는 우리 모두가 버그라고 생각합니다 (또는 런타임시 TileSource를 전환하고 싶지 않을 수도 있습니다).
약간의 Workarround를 만들었습니다. 그것은 작동하지만 진짜 좋은 또는 권장되지 않습니다.
새로운 mapView를 작성하고 osm MapView를 확장합니다. RequestCompleteHandler를 만드는 것보다 타일이로드되고 캐시에 저장되는 것을 볼 수 있습니다. 모든 캐시 된 타일을 계산하고 15 개의 타일이로드 된 후에 만 tileSource를 전환 할 수 있습니다. (응용 프로그램의 osmdroid의 시작 (15 개) 타일을로드 만지도를 이동 한 후 좀 더로드)
class RequestCompleteHandler extends SimpleInvalidationHandler{
private LbsMapView mMapView;
public RequestCompleteHandler(LbsMapView pView) {
super(pView);
mMapView = pView;
}
@Override
public void dispatchMessage(Message msg) {
super.dispatchMessage(msg);
Log.d("DEBUG", "HANDLER HAT GERUFEN! BACKE BACKE KUCHEN!! " + tileCount);
tileCount++;
}
}
는 다음 setTileSource 방법 오버라이드 (override) :
@Override
public void setTileSource(ITileSource aTileSource) {
if(tileCount <= 15){
Toast.makeText(mContext, "Jetz eher nich", Toast.LENGTH_SHORT).show();
} else {
tileCount = 0;
super.setTileSource(aTileSource);
}
}
을하면 설정하고를 초기화 할 필요가 생성자의 핸들러 :
mHandler = new RequestCompleteHandler(this);
getTileProvider().setTileRequestCompleteHandler(mHandler);
완료되었습니다. 타일 소스가 이미 15 개의 타일을로드 할 때만 타일 소스를 전환 할 수 있습니다. 약간의 문제 : 소스가 작동하지 않는 당신은 문제가있는 모든 타일로드되지 않는 경우 : D
그러나 중요한 : 그것은 그것 정말 추한 코드를 사용하지 않는 것이 좋습니다 당신이에서 Google 타일을받을 수 있나요
? TileSourceFactory의 상수 내에서 옵션으로 보지 않습니다. – NickT
@NickT : 그는 mapview 활동 (타일 소스가 아님)을 바꾼 것 같아요 –
아니요 TileSources 만 바꿔서 Google 용 내 TileSource를 만들었습니다 ;-) – Informatic0re