[iPhone] нарисуйте круг вокруг местоположения на карте Google - PullRequest
1 голос
/ 07 октября 2009

Я новичок в программировании iPhone. Я хочу написать приложение с использованием CoreLocation и Mapkit API. Я был в состоянии найти и добавить булавки для текущего местоположения. Сейчас я пытаюсь нарисовать круг вокруг локации, но я не уверен, как это сделать. Буду признателен за любые указатели, спасибо.

Ответы [ 2 ]

1 голос
/ 21 октября 2009

Я думал, что у меня с тобой такой же вопрос. И я нашел ответ на эти вопросы, мне это очень помогло, я надеюсь, что это поможет вам. Рисование точки, линии, многоугольника поверх MKMapview

0 голосов
/ 11 мая 2012

Я знаю, что изначально это был тег iOS SDK 3.0 , но я предполагаю, что это было потому, что в то время это был текущий SDK. Если кто-то ищет ответ на этот вопрос, но может использовать iOS 4.0+, то вот мое решение.

Итак, я предполагаю, что у вас есть UIViewController, которому принадлежит MKMapView.

  @interface MapViewController : UIViewController<MKMapViewDelegate> {
  @private
    MKMapView* mapView;
  }
  @property (nonatomic, retain) IBOutlet MKMapView* mapView;
  @end

и вы настраиваете свои соединения в Interface Builder (XCode сейчас) для подключения фактического MKMapView к mapView розетке. И тогда у вас есть переменная, которая содержит местоположение, вокруг которого вы хотите нарисовать круг: location. Вам просто нужно создать MKCircle и добавить его к вашему mapView как оверлей :

  CLLocationCoordinate2D location = [self getTheLocationSomehow];
  CLLocationDistance radius = 50.0;   // in meters
  MKCircle* circle = [MKCircle circleWithCenterCoordinate: location radius: radius];
  [mapView addOverlay:circle];

Если вы хотите настроить внешний вид вашего круга, ваш контроллер вида может реализовать MKMapViewDelegate и реализовать mapView:viewForOverlay: следующим образом:

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
    MKCircle* circle = overlay;
    MKCircleView* circleView = [[[MKCircleView alloc] initWithCircle: circle] autorelease];
    // make the circle red with some transparency and stroke
    circleView.fillColor = [UIColor colorWithRed:1.0 green:0.0 blue:0.0 alpha:0.25];
    circleView.strokeColor = [UIColor redColor];
    circleView.lineWidth = 2.0;

    return circleView;
}

Не забудьте установить mapView.delegate = self в коде контроллера представления (например, viewDidLoad) или графически через Interface Builder .

...