使用Google Maps API for IOS的​​区域边界坐标

时间:2016-07-25 15:13:00

标签: ios xcode google-maps maps mkmapview

抱歉,我的英语不好。

是否可以使用Google maps API获取区域边界纬度/长度以绘制区域多边形。

使用这个我需要在MKMapview上绘制叠加。

需要任何建议。

提前致谢。

谢谢, 切塔尼亚

2 个答案:

答案 0 :(得分:0)

是的,可以使用Google Places API获取lat / lng,Google Places API for iOS为您的应用提供有关地点的丰富信息,包括地点的名称和地址,地理位置指定为纬度/经度坐标。除此之外,您可以使用overlays在地图的大部分区域上分层内容。覆盖对象是符合MKOverlay协议的任何对象。叠加对象是一个数据对象,其中包含指定叠加层的形状和大小及其在地图上的位置所需的点。叠加可以表示诸如圆形,矩形,多段线以及简单或复杂多边形之类的形状。您还可以定义自己的自定义叠加层以表示其他形状。

注意:

  

在iOS 7和OS X v10.9及更高版本中,覆盖的呈现由overlay renderer对象处理,该对象是MKOverlayRenderer类的实例。渲染器的工作是在地图视图要求时将叠加层的内容绘制到屏幕上。例如,如果您有一个表示公交路线的简单叠加层,则可以使用折线渲染器绘制跟踪公交路线的线段。您还可以定义一个自定义渲染器,在每个公共汽车站的位置绘制公交路线和图标。指定overlays时,您可以将它们添加到地图的特定级别,这允许它们在其他类型的地图内容之上或之下呈现。在iOS 7之前,覆盖一个   显示较少   Dexter Datul
  Dexter Datul   今天下午1:07   使用覆盖视图在屏幕上绘制,覆盖视图是MKOverlayView类的实例。

配置地图界面时,您可以随时添加叠加层对象。地图视图使用每个叠加层对象中的数据来确定何时需要在屏幕上显示相应的叠加层视图。当叠加层在屏幕上移动时,地图视图会要求其代理人创建相应的叠加渲染器。

答案 1 :(得分:0)

使用Google API:

-(CLLocationCoordinate2D)getLatLongFromAddress:(NSString*) addressStr
{
    double latitude = 0, longitude = 0;
    NSString *esc_addr =  [addressStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSString *req = [NSString stringWithFormat:@"http://maps.google.com/maps/api/geocode/json?sensor=false&address=%@", esc_addr];
    NSString *result = [NSString stringWithContentsOfURL:[NSURL URLWithString:req] encoding:NSUTF8StringEncoding error:NULL];

    if (result)
    {
        NSScanner *scanner = [NSScanner scannerWithString:result];
        if ([scanner scanUpToString:@"\"lat\" :" intoString:nil] && [scanner scanString:@"\"lat\" :" intoString:nil])
        {
            [scanner scanDouble:&latitude];
            if ([scanner scanUpToString:@"\"lng\" :" intoString:nil] && [scanner scanString:@"\"lng\" :" intoString:nil])
            {
                [scanner scanDouble:&longitude];
            }
        }
    }

    CLLocationCoordinate2D center;
    center.latitude = latitude;
    center.longitude = longitude;
    return center;
}

使用Geocoder:

CLGeocoder *geocoder = [[CLGeocoder alloc] init];

    [geocoder geocodeAddressString:address completionHandler:^(NSArray *placemarks, NSError *error)
    {
        if(!error)
        {
            if([placemarks count] > 0)
            {
                CLPlacemark *placemark = [placemarks objectAtIndex:0];
                CLLocation *location = placemark.location;
                CLLocationCoordinate2D coordinate = location.coordinate;
            }
        }
   }];