2013-03-13 5 views
7

Мне нужно отобразить круг (как с MKCircle) в GMSMapView. Это легко при использовании MKMapView и MKCircle, но не может использовать MKCircle с GMSMapView. Любые идеи?Как показать круг в GMSMapView

Update:
Это текущие (18.03.2013) Варианты:
1. Наземная маркер, содержащий круг изображения.
2. A круг, сделанный с несколькими сегментами (полилиния).

Edit:
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]; 

Для окружности изображения 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]; 

РЕДАКТИРОВАТЬ: 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; 
+0

Можете ли вы опубликовать то, что вы пробовали до сих пор? – Noich

+0

Я понятия не имею, как начать. Я думал об использовании GMSGroundOverlay и GMSGroundOverlayOptions, добавляя значок круга, но это означает, что круг имеет определенный радиус все время. – Bogus

+0

Он не может работать для iOS 8 –

ответ

1

В настоящий момент SDK Безразлично 't поддерживает круги, но есть функция, чтобы добавить круги здесь:

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

А пока вы могли бы подделать круг, вырисовывая полилинию с несколькими короткими сегментами?

+0

спасибо за идею! – Bogus

7

Немного поздно, так как вопрос старше года, но поиски Google привели меня сюда, поэтому я подумал, что обновляю это. Потомство 4TW!

В настоящее время существует GMSCircle, который может, насколько мне известно, сделать все, что угодно MKCircle может.
Google's documentation on the 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.

Super easy. Проверьте изображения:

Один уровень масштабирования: enter image description here

И здесь, мы масштаб изображения немного: enter image description here

+0

Можно ли рисовать текст по кругу? –

+0

GMSOverlays имеют свойство «title», которое может использоваться для добавления текста к определенным типам маркеров.Если это не дает вам то, что вы хотите, и это то, что я делал с успехом в прошлом, вы можете подклассифицировать GMSMarker и изменить значок, который вам нужен (вам нужно будет создать изображение из это, как я помню). Затем вы можете разместить его в том же месте, что и ваш круг (или добавить круг в качестве члена в ваш подкласс GMSMarker). https://developers.google.com/maps/documentation/ios-sdk/reference/interface_g_m_s_overlay – u2Fan

+0

эй, я хочу исправить круг по карте и получить места, находящиеся за пределами круга, пользователь может перемещать карту, но круг останется на том же месте любая помощь? Спасибо - Kuldeep @ u2Fan – dreamBegin

Смежные вопросы