| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- //
- // GMSPath.h
- // Google Maps SDK for iOS
- //
- // Copyright 2013 Google Inc.
- //
- // Usage of this SDK is subject to the Google Maps/Google Earth APIs Terms of
- // Service: https://developers.google.com/maps/terms
- //
- #import <CoreLocation/CoreLocation.h>
- /**
- * GMSPath encapsulates an immutable array of CLLocationCooordinate2D. All the coordinates of a
- * GMSPath must be valid. The mutable counterpart is GMSMutablePath.
- */
- @interface GMSPath : NSObject <NSCopying, NSMutableCopying>
- /** Convenience constructor for an empty path. */
- + (instancetype)path;
- /** Initializes a newly allocated path with the contents of another GMSPath. */
- - (id)initWithPath:(GMSPath *)path;
- /** Get size of path. */
- - (NSUInteger)count;
- /** Returns kCLLocationCoordinate2DInvalid if |index| >= count. */
- - (CLLocationCoordinate2D)coordinateAtIndex:(NSUInteger)index;
- /**
- * Initializes a newly allocated path from |encodedPath|. This format is described at:
- * https://developers.google.com/maps/documentation/utilities/polylinealgorithm
- */
- + (instancetype)pathFromEncodedPath:(NSString *)encodedPath;
- /** Returns an encoded string of the path in the format described above. */
- - (NSString *)encodedPath;
- /**
- * Returns a new path obtained by adding |deltaLatitude| and |deltaLongitude| to each coordinate
- * of the current path. Does not modify the current path.
- */
- - (instancetype)pathOffsetByLatitude:(CLLocationDegrees)deltaLatitude
- longitude:(CLLocationDegrees)deltaLongitude;
- @end
- /**
- * kGMSEquatorProjectedMeter may be useful when specifying lengths for segment in "projected" units.
- * The value of kGMSEquatorProjectedMeter, 1/(pi * EarthRadius), represents the length of one meter
- * at the equator in projected units. For example to specify a projected length that corresponds
- * to 100km at the equator use 100000 * kGMSEquatorProjectedMeter.
- * See [GMSPath segmentsForLength:kind:], [GMSPath lengthOfKind:] and kGMSLengthProjected.
- */
- extern const double kGMSEquatorProjectedMeter;
- /**
- * GMSLengthKind indicates the type of a length value, which can be geodesic (in meters), rhumb
- * length (in meters) and projected length (in GMSMapPoint units).
- */
- typedef enum {
- /*
- * Geodesic length, in meters, along geodesic segments. May be useful, for example, to specify
- * lengths along the the trajectory of airplanes or ships.
- */
- kGMSLengthGeodesic,
- /*
- * Rhumb length, in meters, along rhumb (straight line) segments. May be useful, for example, to
- * draw a scale bar on a map. The visual size of a segment of a given length depens on the
- * latitude.
- */
- kGMSLengthRhumb,
- /*
- * Length in projected space, along rhumb segments. Projected length uses the same units as
- * GMSMapPoint - the Earth equator circumference has length 2. It is possible to specify projected
- * length in units corresponding to 1 meter at the equator by multiplying with
- * kGMSEquatorProjectedMeter, equal to 1/(pi * EarthRadius).
- *
- * Projected length may be useful, for example, to specify segments with the same visual length
- * regardless of latitude.
- */
- kGMSLengthProjected
- } GMSLengthKind;
- @interface GMSPath (GMSPathLength)
- /**
- * Returns the fractional number of segments along the path that correspond to |length|,
- * interpreted according to |kind|. See GMSLengthKind.
- */
- - (double)segmentsForLength:(CLLocationDistance)length kind:(GMSLengthKind)kind;
- /**
- * Returns the length of the path, according to |kind|. See GMSLengthKind.
- */
- - (CLLocationDistance)lengthOfKind:(GMSLengthKind)kind;
- @end
|