Fix transport message
This commit is contained in:
parent
b222da6b64
commit
3cd598fdcf
1 changed files with 8 additions and 4 deletions
|
@ -1,13 +1,13 @@
|
||||||
package net.osmand.binary;
|
package net.osmand.binary;
|
||||||
|
|
||||||
import gnu.trove.list.array.TIntArrayList;
|
import gnu.trove.list.array.TIntArrayList;
|
||||||
|
import gnu.trove.map.TIntObjectMap;
|
||||||
|
import gnu.trove.map.hash.TIntObjectHashMap;
|
||||||
import static net.osmand.binary.BinaryMapIndexReader.TRANSPORT_STOP_ZOOM;
|
import static net.osmand.binary.BinaryMapIndexReader.TRANSPORT_STOP_ZOOM;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import net.osmand.binary.BinaryMapIndexReader.SearchRequest;
|
import net.osmand.binary.BinaryMapIndexReader.SearchRequest;
|
||||||
import net.osmand.data.TransportStop;
|
import net.osmand.data.TransportStop;
|
||||||
|
@ -72,7 +72,7 @@ public class BinaryMapTransportReaderAdapter {
|
||||||
// offset from start for each SIZE_OFFSET_ARRAY elements
|
// offset from start for each SIZE_OFFSET_ARRAY elements
|
||||||
// (SIZE_OFFSET_ARRAY + 1) offset = offsets[0] + skipOneString()
|
// (SIZE_OFFSET_ARRAY + 1) offset = offsets[0] + skipOneString()
|
||||||
TIntArrayList offsets = new TIntArrayList();
|
TIntArrayList offsets = new TIntArrayList();
|
||||||
Map<Integer, String> cacheOfStrings = new LinkedHashMap<Integer, String>();
|
TIntObjectMap<String> cacheOfStrings = new TIntObjectHashMap<String>();
|
||||||
|
|
||||||
int windowOffset = 0;
|
int windowOffset = 0;
|
||||||
List<String> window = new ArrayList<String>();
|
List<String> window = new ArrayList<String>();
|
||||||
|
@ -104,7 +104,7 @@ public class BinaryMapTransportReaderAdapter {
|
||||||
st.length = codedIS.readRawVarint32();
|
st.length = codedIS.readRawVarint32();
|
||||||
st.fileOffset = codedIS.getTotalBytesRead();
|
st.fileOffset = codedIS.getTotalBytesRead();
|
||||||
// Do not cache for now save memory
|
// Do not cache for now save memory
|
||||||
// readStringTable(st, 0, 20, true);
|
// readStringTable(st, 0, 20, true);
|
||||||
ind.stringTable = st;
|
ind.stringTable = st;
|
||||||
codedIS.seek(st.length + st.fileOffset);
|
codedIS.seek(st.length + st.fileOffset);
|
||||||
break;
|
break;
|
||||||
|
@ -191,6 +191,10 @@ public class BinaryMapTransportReaderAdapter {
|
||||||
if (ind >= st.windowOffset && (ind - st.windowOffset) < st.window.size()) {
|
if (ind >= st.windowOffset && (ind - st.windowOffset) < st.window.size()) {
|
||||||
return st.window.get(ind - st.windowOffset);
|
return st.window.get(ind - st.windowOffset);
|
||||||
}
|
}
|
||||||
|
int startOffset = ind - IndexStringTable.WINDOW_SIZE / 4;
|
||||||
|
if(startOffset < 0){
|
||||||
|
startOffset = 0;
|
||||||
|
}
|
||||||
lastRead = readStringTable(st, ind - IndexStringTable.WINDOW_SIZE / 4, IndexStringTable.WINDOW_SIZE, false);
|
lastRead = readStringTable(st, ind - IndexStringTable.WINDOW_SIZE / 4, IndexStringTable.WINDOW_SIZE, false);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
|
Loading…
Reference in a new issue