【问题标题】:Circle Overlay is not showing on map圆形叠加层未显示在地图上
【发布时间】:2012-02-05 06:34:26
【问题描述】:

我正在尝试向地图添加圆形叠加层,但它没有出现:

- (void) displayOverlayOnMap:(double) lat andlng: (double)  lng
{
    CLLocationCoordinate2D bostonCoord = CLLocationCoordinate2DMake(lat,lng);
    //add MKCircle overlay...
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:1000];
   [self.mapView addOverlay:circle]; 
}

任何机构都知道为什么它没有显示?

【问题讨论】:

    标签: ios map overlay


    【解决方案1】:

    这里是一个例子。你也可以在苹果的网站上找到一个使用多边形的例子:https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps/AnnotatingMaps.html#//apple_ref/doc/uid/TP40009497-CH6-SW15

    或者你可以使用这个例子

    Create overlay from user interaction on MKMapView?

    - (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer
    {
        if (gestureRecognizer.state != UIGestureRecognizerStateBegan)
            return;
    
        CGPoint touchPoint = [gestureRecognizer locationInView:mapView];    
        CLLocationCoordinate2D touchMapCoordinate = [mapView convertPoint:touchPoint toCoordinateFromView:mapView];
    
        //add pin where user touched down...
        MKPointAnnotation *pa = [[MKPointAnnotation alloc] init];
        pa.coordinate = touchMapCoordinate;
        pa.title = @"Hello";
        [mapView addAnnotation:pa];
        [pa release];
    
        //add circle with 5km radius where user touched down...
        MKCircle *circle = [MKCircle circleWithCenterCoordinate:touchMapCoordinate radius:5000];
        [mapView addOverlay:circle];
    }
    
    -(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay 
    {
        MKCircleView* circleView = [[[MKCircleView alloc] initWithOverlay:overlay] autorelease];
        circleView.fillColor = [UIColor redColor];
        return circleView;
    }
    
    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
    {
        static NSString *AnnotationIdentifier = @"Annotation";
        MKPinAnnotationView* pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier];
        if (!pinView)
        {
            pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease];
            pinView.pinColor = MKPinAnnotationColorGreen;
            pinView.animatesDrop = YES;
        }
        else
        {
            pinView.annotation = annotation;
        }
        return pinView;
    }
    

    【讨论】:

      【解决方案2】:

      使用代码

      CLLocationDistance radiusInMeters = 1000;
      MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:radiusInMeters];
      

      代替

      MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:1000];
      

      它对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-18
        • 2013-09-24
        相关资源
        最近更新 更多