如何在GMSMapView中显示圆圈

Bog*_*gus 13 google-maps ios google-maps-sdk-ios

我需要在GMSMapView上显示一个圆圈(与MKCircle一样).使用MKMapView和MKCircle时很容易,但不能将MKCircle与GMSMapView一起使用.有任何想法吗?

更新:
这是当前(18.03.2013)选项:
1.包含圆形图像的地面标记.
一个由几个部分组成的圆(折线).

编辑:
3.Google添加了一个GMSCircle(23.04.2013)

 GMSGroundOverlayOptions *overlayOptions = [GMSGroundOverlayOptions options];
    overlayOptions.icon = [UIImage imageNamed:@"circle"];
    overlayOptions.position = touchMapCoordinate;
    overlayOptions.bearing = 0;
    overlayOptions.zoomLevel = 14.3;
 [mapView addGroundOverlayWithOptions:overlayOptions];
Run Code Online (Sandbox Code Playgroud)

对于40x40像素的圆形图像,它看起来不错.(半径约为100米)

小分段路径解决方案:

    GMSPolylineOptions *circle = [GMSPolylineOptions options];
    CGPoint touchPoint = [mapView.projection pointForCoordinate:touchMapCoordinate];
    GMSMutablePath *path = [GMSMutablePath path];

    CGPoint circlePoint;

    for (int i = 0; i < 360; i++)
    { 
        circlePoint.x = touchPoint.x + radius * cos(i*M_PI/180);
        circlePoint.y = touchPoint.y + radius * sin(i*M_PI/180);

        CLLocationCoordinate2D aux = [mapView.projection coordinateForPoint:circlePoint];
        [path addCoordinate:aux];
    }

    circle.path = path;
    circle.width = 1;

    [mapView addPolylineWithOptions:circle];
Run Code Online (Sandbox Code Playgroud)

编辑:08.05.2013

GMSCircle解决方案:

     CLLocationCoordinate2D circleCenter = CLLocationCoordinate2DMake(latitude, longitude);
     GMSCircle *circ = [GMSCircle circleWithPosition:circleCenter
                                     radius:1000];

     circ.fillColor = [UIColor blueColor];
     circ.strokeColor = [UIColor redColor];
     circ.strokeWidth = 5;
     circ.map = mapView;
Run Code Online (Sandbox Code Playgroud)

u2F*_*Fan 10

由于这个问题已经有一年多了,所以有点晚了,但谷歌搜索引领我到这里,所以我想我会更新这个.后人4TW!

GMSCircle据我所知,现在有一个可以做的事情MKCircle.
Google关于GMSCircle的文档.

// Build a circle for the GMSMapView
GMSCircle *geoFenceCircle = [[GMSCircle alloc] init];
geoFenceCircle.radius = 130; // Meters
geoFenceCircle.position = SOME_CLLOCATION.coordinate; // Some CLLocationCoordinate2D position
geoFenceCircle.fillColor = [UIColor colorWithWhite:0.7 alpha:0.5];
geoFenceCircle.strokeWidth = 3;
geoFenceCircle.strokeColor = [UIColor orangeColor];
geoFenceCircle.map = mapView; // Add it to the map.
Run Code Online (Sandbox Code Playgroud)

它的行为与MKCircle(叠加)非常相似,因为它会根据地图的缩放级别等进行调整.请忽略中心的蓝色圆圈; 这是地图视图上显示的用户位置,我只是使用相同的坐标作为GMSCircle的中心点.

超级容易.看看图片:

一个缩放级别: 在此输入图像描述

在这里,我们缩小了一点: 在此输入图像描述


Sax*_*uce 1

目前 SDK 不支持圈子,但有一个功能请求在此处添加圈子:

https://code.google.com/p/gmaps-api-issues/issues/detail?id=4971

与此同时,您可以通过绘制一条带有几条短线段的折线来假造一个圆吗?