1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
package com.mapbox.mapboxsdk.offline;
import android.os.Parcel;
import android.os.Parcelable;
import android.support.annotation.Keep;
import android.support.annotation.NonNull;
import com.mapbox.mapboxsdk.geometry.LatLng;
import com.mapbox.mapboxsdk.geometry.LatLngBounds;
/**
* An offline region defined by a style URL, geographic bounding box, zoom range, and
* device pixel ratio.
* <p>
* Both minZoom and maxZoom must be ≥ 0, and maxZoom must be ≥ minZoom.
* <p>
* maxZoom may be ∞, in which case for each tile source, the region will include
* tiles from minZoom up to the maximum zoom level provided by that source.
* <p>
* pixelRatio must be ≥ 0 and should typically be 1.0 or 2.0.
*/
public class OfflineTilePyramidRegionDefinition implements OfflineRegionDefinition, Parcelable {
@Keep
private String styleURL;
@Keep
private LatLngBounds bounds;
@Keep
private double minZoom;
@Keep
private double maxZoom;
@Keep
private float pixelRatio;
/**
* Constructor to create an OfflineTilePyramidDefinition from parameters.
*
* @param styleURL the style
* @param bounds the bounds
* @param minZoom min zoom
* @param maxZoom max zoom
* @param pixelRatio pixel ratio of the device
*/
@Keep
public OfflineTilePyramidRegionDefinition(
String styleURL, LatLngBounds bounds, double minZoom, double maxZoom, float pixelRatio) {
// Note: Also used in JNI
this.styleURL = styleURL;
this.bounds = bounds;
this.minZoom = minZoom;
this.maxZoom = maxZoom;
this.pixelRatio = pixelRatio;
}
/**
* Constructor to create an OfflineTilePyramidDefinition from a Parcel.
*
* @param parcel the parcel to create the OfflineTilePyramidDefinition from
*/
public OfflineTilePyramidRegionDefinition(Parcel parcel) {
this.styleURL = parcel.readString();
this.bounds = new LatLngBounds.Builder()
.include(new LatLng(parcel.readDouble(), parcel.readDouble()))
.include(new LatLng(parcel.readDouble(), parcel.readDouble()))
.build();
this.minZoom = parcel.readDouble();
this.maxZoom = parcel.readDouble();
this.pixelRatio = parcel.readFloat();
}
@Override
public String getStyleURL() {
return styleURL;
}
@Override
public LatLngBounds getBounds() {
return bounds;
}
@Override
public double getMinZoom() {
return minZoom;
}
@Override
public double getMaxZoom() {
return maxZoom;
}
@Override
public float getPixelRatio() {
return pixelRatio;
}
@NonNull
@Override
public String getType() {
return "tileregion";
}
/*
* Parceable
*/
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(@NonNull Parcel dest, int flags) {
dest.writeString(styleURL);
dest.writeDouble(bounds.getLatNorth());
dest.writeDouble(bounds.getLonEast());
dest.writeDouble(bounds.getLatSouth());
dest.writeDouble(bounds.getLonWest());
dest.writeDouble(minZoom);
dest.writeDouble(maxZoom);
dest.writeFloat(pixelRatio);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public OfflineTilePyramidRegionDefinition createFromParcel(@NonNull Parcel in) {
return new OfflineTilePyramidRegionDefinition(in);
}
public OfflineTilePyramidRegionDefinition[] newArray(int size) {
return new OfflineTilePyramidRegionDefinition[size];
}
};
}
|