如何在GMSMapView中显示一个圆
我需要在GMSMapView上显示一个圆(与MKCircle一样)。 使用MKMapView和MKCircle时,这很容易,但不能在GMSMapView中使用MKCircle。 有任何想法吗?
更新:
这是目前(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];
对于40×40像素的圆形图像,它看起来不错。 (半径大约100米)
小分段path解决scheme:
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];
编辑:08.05.2013
GMSCircle解决scheme:
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;
目前SDK不支持圈子,但有一个function要求在这里添加圈子:
https://code.google.com/p/gmaps-api-issues/issues/detail?id=4971
在此期间,你也许可以通过画几条短折线来制作一个圆圈?
这个问题已经过了一年多了,但是Google的search引导了我,所以我想我会更新这个。 后人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.
它的行为与MKCircle(叠加)非常相似,因为它会根据地图的缩放级别进行调整。请忽略中心的蓝色圆圈。 那就是地图视图中显示的用户位置,而且我刚刚使用了与GMSCircle中心点相同的坐标。
超级简单。 看看图片:
一个缩放级别:
在这里,我们缩小了一下: