71 lines
2.8 KiB
Protocol Buffer
71 lines
2.8 KiB
Protocol Buffer
// Copyright 2016 Google Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
syntax = "proto3";
|
|
|
|
package google.type;
|
|
|
|
option go_package = "google.golang.org/genproto/googleapis/type/latlng;latlng";
|
|
option java_multiple_files = true;
|
|
option java_outer_classname = "LatLngProto";
|
|
option java_package = "com.google.type";
|
|
option objc_class_prefix = "GTP";
|
|
|
|
// An object representing a latitude/longitude pair. This is expressed as a pair
|
|
// of doubles representing degrees latitude and degrees longitude. Unless
|
|
// specified otherwise, this must conform to the
|
|
// <a href="http://www.unoosa.org/pdf/icg/2012/template/WGS_84.pdf">WGS84
|
|
// standard</a>. Values must be within normalized ranges.
|
|
//
|
|
// Example of normalization code in Python:
|
|
//
|
|
// def NormalizeLongitude(longitude):
|
|
// """Wraps decimal degrees longitude to [-180.0, 180.0]."""
|
|
// q, r = divmod(longitude, 360.0)
|
|
// if r > 180.0 or (r == 180.0 and q <= -1.0):
|
|
// return r - 360.0
|
|
// return r
|
|
//
|
|
// def NormalizeLatLng(latitude, longitude):
|
|
// """Wraps decimal degrees latitude and longitude to
|
|
// [-90.0, 90.0] and [-180.0, 180.0], respectively."""
|
|
// r = latitude % 360.0
|
|
// if r <= 90.0:
|
|
// return r, NormalizeLongitude(longitude)
|
|
// elif r >= 270.0:
|
|
// return r - 360, NormalizeLongitude(longitude)
|
|
// else:
|
|
// return 180 - r, NormalizeLongitude(longitude + 180.0)
|
|
//
|
|
// assert 180.0 == NormalizeLongitude(180.0)
|
|
// assert -180.0 == NormalizeLongitude(-180.0)
|
|
// assert -179.0 == NormalizeLongitude(181.0)
|
|
// assert (0.0, 0.0) == NormalizeLatLng(360.0, 0.0)
|
|
// assert (0.0, 0.0) == NormalizeLatLng(-360.0, 0.0)
|
|
// assert (85.0, 180.0) == NormalizeLatLng(95.0, 0.0)
|
|
// assert (-85.0, -170.0) == NormalizeLatLng(-95.0, 10.0)
|
|
// assert (90.0, 10.0) == NormalizeLatLng(90.0, 10.0)
|
|
// assert (-90.0, -10.0) == NormalizeLatLng(-90.0, -10.0)
|
|
// assert (0.0, -170.0) == NormalizeLatLng(-180.0, 10.0)
|
|
// assert (0.0, -170.0) == NormalizeLatLng(180.0, 10.0)
|
|
// assert (-90.0, 10.0) == NormalizeLatLng(270.0, 10.0)
|
|
// assert (90.0, 10.0) == NormalizeLatLng(-270.0, 10.0)
|
|
message LatLng {
|
|
// The latitude in degrees. It must be in the range [-90.0, +90.0].
|
|
double latitude = 1;
|
|
|
|
// The longitude in degrees. It must be in the range [-180.0, +180.0].
|
|
double longitude = 2;
|
|
}
|