如何找到谷歌地图路径的长度

问题描述 投票:0回答:2

我正在使用适用于 iOS 的 Google Maps SDK,并使用

GMSMutablePath
对象创建了一条路线。在API文档中,它说它有一个名为
lengthOfKind
的函数,可以计算路径的长度,但它需要一个
GMSLengthKind
类型的对象。

(CLLocationDistance) lengthOfKind:      (GMSLengthKind)     kind    
Returns the length of the path, according to kind.  
See GMSLengthKind.

但是,文档中没有任何地方提到

GMSLengthKind
,我似乎找不到任何对输入有意义的内容。有谁知道 inout 应该是什么或者是否有其他方法来计算路径的长度?

这是我查阅过的链接

ios google-maps google-maps-sdk-ios
2个回答
2
投票
// coord is a coordinates array

GMSMutablePath path = [[GMSMutablePath alloc] init];

    for (NSString * row in coord) {
        NSArray *array = [row componentsSeparatedByString:@"|"];
        double lat = [[array objectAtIndex: 0] doubleValue];
        double lon = [[array objectAtIndex: 1] doubleValue];
        [path addCoordinate:CLLocationCoordinate2DMake(lat, lon)];
    }
    // Geodesic length, in meters, along geodesic segments
    NSLog(@"Lenght Length Projected=%f",[path lengthOfKind:kGMSLengthProjected]);

    // Rhumb length, in meters, along rhumb (straight line) segments
    NSLog(@"Lenght Length Rhumb=%f",[path lengthOfKind:kGMSLengthRhumb]);

    // Length in projected space, along rhumb segments.
    NSLog(@"Lenght Length Geodesic=%f",[path lengthOfKind:kGMSLengthGeodesic]);


1
投票

GMSLengthKind
在GMSPath.h中定义:

/**
 * 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;
© www.soinside.com 2019 - 2024. All rights reserved.