kiwi-postgis  Version 0.1.0.0
PolyshapeWriter.Encoder Class Reference

Encodes a sequence of LatLngs into an encoded path string. More...

Collaboration diagram for PolyshapeWriter.Encoder:

Public Member Functions

 Encoder (Writer writer)
 
void seperator () throws IOException
 
void startRing () throws IOException
 
void write (char event) throws IOException
 
void writeArg (double value) throws IOException
 
void write (double latitude, double longitude) throws IOException
 

Package Attributes

long lastLat = 0
 
long lastLng = 0
 
final Writer writer
 

Private Member Functions

void encode (long v) throws IOException
 

Detailed Description

Encodes a sequence of LatLngs into an encoded path string.

from Apache 2.0 licensed: https://github.com/googlemaps/android-maps-utils/blob/master/library/src/com/google/maps/android/PolyUtil.java

Constructor & Destructor Documentation

◆ Encoder()

Encoder ( Writer  writer)

References PolyshapeWriter.Encoder.writer.

165  {
166  this.writer = writer;
167  }

Member Function Documentation

◆ encode()

void encode ( long  v) throws IOException
private

Referenced by PolyshapeWriter.Encoder.write(), and PolyshapeWriter.Encoder.writeArg().

205  {
206  v = v < 0 ? ~(v << 1) : v << 1;
207  while (v >= 0x20) {
208  writer.write(Character.toChars((int) ((0x20 | (v & 0x1f)) + 63)));
209  v >>= 5;
210  }
211  writer.write(Character.toChars((int) (v + 63)));
212  }

◆ seperator()

void seperator ( ) throws IOException
169  {
170  writer.write(KEY_SEPERATOR);
171  lastLat = lastLng = 0;
172  }
static final char KEY_SEPERATOR
Definition: PolyshapeWriter.java:150

◆ startRing()

void startRing ( ) throws IOException
174  {
175  writer.write(KEY_ARG_START);
176  lastLat = lastLng = 0;
177  }
static final char KEY_ARG_START
Definition: PolyshapeWriter.java:148

◆ write() [1/2]

void write ( char  event) throws IOException
179  {
180  writer.write(event);
181  lastLat = lastLng = 0;
182  }

◆ write() [2/2]

void write ( double  latitude,
double  longitude 
) throws IOException

References PolyshapeWriter.Encoder.encode(), PolyshapeWriter.Encoder.lastLat, and PolyshapeWriter.Encoder.lastLng.

190  {
191 
192  long lat = Math.round(latitude * 1e5);
193  long lng = Math.round(longitude * 1e5);
194 
195  long dLat = lat - lastLat;
196  long dLng = lng - lastLng;
197 
198  encode(dLat);
199  encode(dLng);
200 
201  lastLat = lat;
202  lastLng = lng;
203  }

◆ writeArg()

void writeArg ( double  value) throws IOException

References PolyshapeWriter.Encoder.encode().

184  {
185  writer.write(KEY_ARG_START);
186  encode(Math.round(value * 1e5));
187  writer.write(KEY_ARG_END);
188  }
static final char KEY_ARG_END
Definition: PolyshapeWriter.java:149
static final char KEY_ARG_START
Definition: PolyshapeWriter.java:148

Member Data Documentation

◆ lastLat

long lastLat = 0
package

◆ lastLng

long lastLng = 0
package

◆ writer

final Writer writer
package