0

我正在为 iPhone 开发一个应用程序,我想使用我的折线生成一个谷歌静态地图图像,使用谷歌静态地图 API V2 和我拥有的一组 CLLocations。我现在正在使用这段代码:

NSArray *points = self.pathModel.pathPoints;
NSString *urlString = @"http://maps.google.com/maps/api/staticmap?path=color:0x80008080%7Cweight:5%7C";
for (int i=0; i<points.count; i++) {
    float latitude = [(CLLocation *)points[i] coordinate].latitude;
    float longitude = [(CLLocation *)points[i] coordinate].longitude;
    if (i<points.count-1) {
        urlString = [urlString stringByAppendingFormat:@"%f,%f%%7C", latitude, longitude];
    } else {
        urlString = [urlString stringByAppendingFormat:@"%f,%f", latitude, longitude];
    }
}

urlString = [urlString stringByAppendingString:@"&size=640x480&scale=2&sensor=true&key=AIzaSyDjU3Ly8X1TasKvUWgEF8v8uTE5PEU8ci8"];

问题是我可以在 URL 格式中包含的点数是有限制的,除非我提供此处所述的编码路径。是否有任何 Objective-C API 为 Google Static Maps API 编码位置点?或者有没有办法我可以自己编码 urlString?

我正在寻找一个 Objective-C 类型的解决方案。我不知道C。

4

2 回答 2

0

路径的编码和解码现在由google.maps.geometry.encoding静态方法encodePathdecodePath.

于 2013-07-25T03:03:45.653 回答
0

要在 Objective-C 中编码路径,您可以使用Google Maps SDK for iOS中的-encodedPath方法:GMSPath

GMSMutablePath* path = [GMSMutablePath path];
for(int i=0; i<points.count; i++)
{
    CLLocation* location = points[i];
    const CLLocationDegrees latitude = location.coordinate.latitude;
    const CLLocationDegrees longitude = location.coordinate.longitude;
    [path addLatitude:latitude longitude:longitude];
}

NSString* encodedPath = [path encodedPath];

解码,可以使用+pathFromEncodedPath:同一个类的方法。

于 2015-07-04T04:01:29.663 回答