diff --git a/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java b/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java index 82a1e0ad..1964eccb 100644 --- a/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java +++ b/vtm-extras/src/org/oscim/tiling/source/oscimap/TileDecoder.java @@ -384,7 +384,7 @@ public class TileDecoder extends PbfDecoder { return coordCnt; } - @Override + //@Override protected int decodeInterleavedPoints(float[] coords, float scale) throws IOException { diff --git a/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java b/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java index e9cf2405..63b1ce50 100644 --- a/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java +++ b/vtm-extras/src/org/oscim/tiling/source/oscimap2/OSciMap2TileSource.java @@ -229,7 +229,7 @@ public class OSciMap2TileSource extends UrlTileSource { } mElem.ensurePointSize(coordCnt, false); - int cnt = decodeInterleavedPoints(mElem.points, mScale); + int cnt = decodeInterleavedPoints(mElem, mScale); if (cnt != coordCnt) { log.debug(mTile + " wrong number of coordintes"); diff --git a/vtm/src/org/oscim/core/GeometryBuffer.java b/vtm/src/org/oscim/core/GeometryBuffer.java index 5d741e68..8593de14 100644 --- a/vtm/src/org/oscim/core/GeometryBuffer.java +++ b/vtm/src/org/oscim/core/GeometryBuffer.java @@ -98,7 +98,7 @@ public class GeometryBuffer { } public int getNumPoints() { - return index[0] >> 1; + return pointPos >> 1; } /** diff --git a/vtm/src/org/oscim/tiling/source/common/PbfDecoder.java b/vtm/src/org/oscim/tiling/source/common/PbfDecoder.java index ab7931e8..16a1b015 100644 --- a/vtm/src/org/oscim/tiling/source/common/PbfDecoder.java +++ b/vtm/src/org/oscim/tiling/source/common/PbfDecoder.java @@ -19,6 +19,7 @@ package org.oscim.tiling.source.common; import java.io.IOException; import java.io.InputStream; +import org.oscim.core.GeometryBuffer; import org.oscim.tiling.source.ITileDecoder; import org.oscim.utils.UTF8Decoder; import org.slf4j.Logger; @@ -187,9 +188,10 @@ public abstract class PbfDecoder implements ITileDecoder { return buffer[bufferPos++] != 0; } - protected int decodeInterleavedPoints(float[] coords, float scale) + protected int decodeInterleavedPoints(GeometryBuffer geom, float scale) throws IOException { + float[] points = geom.points; int bytes = decodeVarint32(); fillBuffer(bytes); @@ -229,11 +231,11 @@ public abstract class PbfDecoder implements ITileDecoder { if (even) { lastX = lastX + s; - coords[cnt++] = lastX / scale; + points[cnt++] = lastX / scale; even = false; } else { lastY = lastY + s; - coords[cnt++] = lastY / scale; + points[cnt++] = lastY / scale; even = true; } } @@ -243,6 +245,8 @@ public abstract class PbfDecoder implements ITileDecoder { bufferPos = pos; + geom.pointPos = cnt; + // return number of points read return (cnt >> 1); } diff --git a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java index f0190751..4a5b5b58 100644 --- a/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java +++ b/vtm/src/org/oscim/tiling/source/oscimap4/TileDecoder.java @@ -298,8 +298,7 @@ public class TileDecoder extends PbfDecoder { } mElem.ensurePointSize(coordCnt, false); - int cnt = decodeInterleavedPoints(mElem.points, - mScaleFactor); + int cnt = decodeInterleavedPoints(mElem, mScaleFactor); if (cnt != coordCnt) { log.debug("{} wrong number of coordintes {}/{}", mTile,