Initial version -- added millennium read funcionality
This commit is contained in:
@@ -0,0 +1,144 @@
|
||||
package com.google.android.gms.maps.model;
|
||||
|
||||
import android.content.Context;
|
||||
import android.os.Parcel;
|
||||
import android.os.Parcelable;
|
||||
import android.util.AttributeSet;
|
||||
import com.google.android.gms.common.internal.Objects;
|
||||
import com.google.android.gms.common.internal.Preconditions;
|
||||
import com.google.android.gms.common.internal.ReflectedParcelable;
|
||||
import com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable;
|
||||
import com.google.android.gms.common.internal.safeparcel.SafeParcelWriter;
|
||||
import com.google.android.gms.maps.GoogleMapOptions;
|
||||
|
||||
/* JADX INFO: compiled from: com.google.android.gms:play-services-maps@@19.0.0 */
|
||||
/* JADX INFO: loaded from: classes2.dex */
|
||||
public final class LatLngBounds extends AbstractSafeParcelable implements ReflectedParcelable {
|
||||
public static final Parcelable.Creator<LatLngBounds> CREATOR = new zzm();
|
||||
public final LatLng northeast;
|
||||
public final LatLng southwest;
|
||||
|
||||
/* JADX INFO: compiled from: com.google.android.gms:play-services-maps@@19.0.0 */
|
||||
public static final class Builder {
|
||||
private double zza = Double.POSITIVE_INFINITY;
|
||||
private double zzb = Double.NEGATIVE_INFINITY;
|
||||
private double zzc = Double.NaN;
|
||||
private double zzd = Double.NaN;
|
||||
|
||||
public LatLngBounds build() {
|
||||
Preconditions.checkState(!Double.isNaN(this.zzc), "no included points");
|
||||
return new LatLngBounds(new LatLng(this.zza, this.zzc), new LatLng(this.zzb, this.zzd));
|
||||
}
|
||||
|
||||
public Builder include(LatLng latLng) {
|
||||
Preconditions.checkNotNull(latLng, "point must not be null");
|
||||
this.zza = Math.min(this.zza, latLng.latitude);
|
||||
this.zzb = Math.max(this.zzb, latLng.latitude);
|
||||
double d = latLng.longitude;
|
||||
if (Double.isNaN(this.zzc)) {
|
||||
this.zzc = d;
|
||||
this.zzd = d;
|
||||
} else {
|
||||
double d2 = this.zzc;
|
||||
double d3 = this.zzd;
|
||||
if (d2 > d3 ? !(d2 <= d || d <= d3) : !(d2 <= d && d <= d3)) {
|
||||
Parcelable.Creator<LatLngBounds> creator = LatLngBounds.CREATOR;
|
||||
if (((d2 - d) + 360.0d) % 360.0d < ((d - this.zzd) + 360.0d) % 360.0d) {
|
||||
this.zzc = d;
|
||||
} else {
|
||||
this.zzd = d;
|
||||
}
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
public LatLngBounds(LatLng latLng, LatLng latLng2) {
|
||||
Preconditions.checkNotNull(latLng, "southwest must not be null.");
|
||||
Preconditions.checkNotNull(latLng2, "northeast must not be null.");
|
||||
double d = latLng2.latitude;
|
||||
double d2 = latLng.latitude;
|
||||
Preconditions.checkArgument(d >= d2, "southern latitude exceeds northern latitude (%s > %s)", Double.valueOf(d2), Double.valueOf(latLng2.latitude));
|
||||
this.southwest = latLng;
|
||||
this.northeast = latLng2;
|
||||
}
|
||||
|
||||
public static Builder builder() {
|
||||
return new Builder();
|
||||
}
|
||||
|
||||
public static LatLngBounds createFromAttributes(Context context, AttributeSet attributeSet) {
|
||||
return GoogleMapOptions.zzb(context, attributeSet);
|
||||
}
|
||||
|
||||
private final boolean zza(double d) {
|
||||
LatLng latLng = this.northeast;
|
||||
double d2 = this.southwest.longitude;
|
||||
double d3 = latLng.longitude;
|
||||
return d2 <= d3 ? d2 <= d && d <= d3 : d2 <= d || d <= d3;
|
||||
}
|
||||
|
||||
public boolean contains(LatLng latLng) {
|
||||
LatLng latLng2 = (LatLng) Preconditions.checkNotNull(latLng, "point must not be null.");
|
||||
double d = latLng2.latitude;
|
||||
return this.southwest.latitude <= d && d <= this.northeast.latitude && zza(latLng2.longitude);
|
||||
}
|
||||
|
||||
public boolean equals(Object obj) {
|
||||
if (this == obj) {
|
||||
return true;
|
||||
}
|
||||
if (!(obj instanceof LatLngBounds)) {
|
||||
return false;
|
||||
}
|
||||
LatLngBounds latLngBounds = (LatLngBounds) obj;
|
||||
return this.southwest.equals(latLngBounds.southwest) && this.northeast.equals(latLngBounds.northeast);
|
||||
}
|
||||
|
||||
public LatLng getCenter() {
|
||||
LatLng latLng = this.northeast;
|
||||
LatLng latLng2 = this.southwest;
|
||||
double d = latLng2.latitude + latLng.latitude;
|
||||
double d2 = latLng.longitude;
|
||||
double d3 = latLng2.longitude;
|
||||
if (d3 > d2) {
|
||||
d2 += 360.0d;
|
||||
}
|
||||
return new LatLng(d / 2.0d, (d2 + d3) / 2.0d);
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return Objects.hashCode(this.southwest, this.northeast);
|
||||
}
|
||||
|
||||
public LatLngBounds including(LatLng latLng) {
|
||||
LatLng latLng2 = (LatLng) Preconditions.checkNotNull(latLng, "point must not be null.");
|
||||
double dMin = Math.min(this.southwest.latitude, latLng2.latitude);
|
||||
double dMax = Math.max(this.northeast.latitude, latLng2.latitude);
|
||||
double d = this.northeast.longitude;
|
||||
double d2 = this.southwest.longitude;
|
||||
double d3 = latLng2.longitude;
|
||||
if (!zza(d3)) {
|
||||
if (((d2 - d3) + 360.0d) % 360.0d < ((d3 - d) + 360.0d) % 360.0d) {
|
||||
d2 = d3;
|
||||
} else {
|
||||
d = d3;
|
||||
}
|
||||
}
|
||||
return new LatLngBounds(new LatLng(dMin, d2), new LatLng(dMax, d));
|
||||
}
|
||||
|
||||
public String toString() {
|
||||
return Objects.toStringHelper(this).add("southwest", this.southwest).add("northeast", this.northeast).toString();
|
||||
}
|
||||
|
||||
@Override // android.os.Parcelable
|
||||
public void writeToParcel(Parcel parcel, int i) {
|
||||
LatLng latLng = this.southwest;
|
||||
int iBeginObjectHeader = SafeParcelWriter.beginObjectHeader(parcel);
|
||||
SafeParcelWriter.writeParcelable(parcel, 2, latLng, i, false);
|
||||
SafeParcelWriter.writeParcelable(parcel, 3, this.northeast, i, false);
|
||||
SafeParcelWriter.finishObjectHeader(parcel, iBeginObjectHeader);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user