标签: mapkit

如何确定坐标是否在当前可见的地图区域中?

我有几百个位置的列表,只想为当前屏幕上的那些位置显示MKPinAnnotation.屏幕以用户当前位置开始,半径为2英里.当然,用户可以在屏幕上滚动和缩放.现在,我等待地图更新事件,然后遍历我的位置列表,并检查这样的坐标:

-(void)mapViewDidFinishLoadingMap:(MKMapView *)mapView {
  CGPoint point;
  CLLocationCoordinate2D coordinate;

  . . .
  /* in location loop */
  coordinate.latitude = [nextLocation getLatitude];
  coordinate.longitude = [nextLocation getLongitude];

  /* Determine if point is in view. Is there a better way then this? */
  point = [mapView convertCoordinate:coordinate toPointToView:nil];
  if( (point.x > 0) && (point.y>0) ) {
    /* Add coordinate to array that is later added to mapView */
  }
Run Code Online (Sandbox Code Playgroud)

所以我问convertCoordinate哪个点在屏幕上(除非我误解了这个方法很可能).如果坐标不在屏幕上,那么我从不将它添加到mapView.

所以我的问题是,这是确定位置的纬度/经度是否会出现在当前视图中并且应该添加到mapView的正确方法吗?或者我应该以不同的方式做这件事吗?

iphone cocoa-touch objective-c mapkit iphone-sdk-3.0

2
推荐指数
2
解决办法
6265
查看次数

iPhone SDK:使用GPS跟踪用户位置

我有一些关于CoreLocation和GPS的问题.

首先,核心位置使用什么方法来持续获取用户当前坐标?在什么时间间隔应该检索这些?

第二,每次接收这些坐标时是否应将这些坐标推入NSMutableArray,以便坐标数组代表用户路径?

谢谢,只是想开始让我介意这一点.

iphone core-location mapkit mkmapview

2
推荐指数
1
解决办法
7653
查看次数

更新MKannotation图像而不闪烁

我想每5秒在mapview上更新一些注释的图像,但是我不想删除它们并将它们重新添加到地图中,因为这会导致它们"闪烁"或刷新,(即消失然后重新出现) .我希望它是无缝的.

我尝试过以下方法:

//get the current icon
        UserAnnotation *annotation = [self GetUserIconWithDeviceId:deviceId];

        //make a new annotation for it 
        UserAnnotation *newAnnotation = [[UserAnnotation alloc]
                                         initWithCoordinate: userCoordinates
                                         addressDictionary:nil];
        newAnnotation.title = name;
        newAnnotation.userDeviceId = deviceId;
        NSInteger ageIndicator = [[userLocation objectForKey: @"ageIndicator"] integerValue];
        newAnnotation.customImage = [UserIconHelpers imageWithAgeBorder:ageIndicator FromImage: userImage];



        //if its not there, add it 
        if (annotation != nil){
            //move it 

            //update location
            annotation.coordinate = userCoordinates;

            //add new one 
            [self.mapView addAnnotation: newAnnotation];

            //delete old one 
            [self.mapView removeAnnotation: annotation];

        } else {
        //just addd the …
Run Code Online (Sandbox Code Playgroud)

objective-c mapkit ios

2
推荐指数
1
解决办法
3827
查看次数

将纬度和经度转换为米或公里

我有两个MapKit注释,显示纬度和经度.

有什么方法可以通过现有的Objective-C iOS API函数来计算两者之间的距离吗?

cocoa-touch objective-c mapkit mkmapview ios

2
推荐指数
1
解决办法
5650
查看次数

如何在同一个地图视图中为注释添加不同的图像

我有一个带有多个注释的MapView.但是我需要根据JSON值将不同的图像放到注释中.

在此输入图像描述

这就是我想要做的......需要根据JSON值为引脚添加不同的图像.

是否有人知道如何做到这一点?请帮助,这将非常有帮助.

谢谢

iphone annotations mapkit mkmapview mkannotation

2
推荐指数
1
解决办法
1735
查看次数

在MapKit引脚上隐藏和禁用用户交互?

我正试图在MapKit视图上隐藏一个引脚,并在设置hidden属性YES工作时,我仍然可以点击它并获取didSelectAnnotationView消息!当然,我尝试设置userInteractionEnabledNO,但我仍然收到的消息.

这就是我尝试过的.a是我的注释视图.

a.hidden = YES; 
a.layer.hidden = YES;
a.userInteractionEnabled = NO;
Run Code Online (Sandbox Code Playgroud)

这里有一些我不知道的东西,我在各处搜索过,找不到任何可行的东西.有线索吗?

mapkit mkmapview mkannotationview ios

2
推荐指数
1
解决办法
2925
查看次数

MKPinAnnotationView自定义图像

我想在地图上设置自定义图像而不是普通图钉.我也希望它能够被打开并为每一个添加下降动画.

有什么建议吗?

编辑:这就是我的全部

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(ActivityAnnotation *)annotation
{
    static NSString* AnnotationIdentifier = @"AnnotationIdentifier";
    MKPinAnnotationView* pinView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier];
    pinView.animatesDrop=YES;
    pinView.canShowCallout=YES;
    UIImage *image = [UIImage imageNamed:@"Map_Pin"];
    pinView.image = image;
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.frame = CGRectMake(-2.5,6,27,30);
    [pinView addSubview:imageView];
    UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    rightButton.tag = [activities indexOfObject:annotation.activity];
    [rightButton addTarget:self action:@selector(showDetails:) forControlEvents:UIControlEventTouchUpInside];
    pinView.rightCalloutAccessoryView = rightButton;

    return pinView;
}
Run Code Online (Sandbox Code Playgroud)

一切正常,但原始图钉不断显示在我的默认图像后面.我怎么擦除它?

iphone objective-c mapkit mkpinannotationview

2
推荐指数
1
解决办法
3220
查看次数

iphone:如何在MapKit上为每个引脚点显示不同的图像?

我想在iPhone/iPad应用程序中将叠加的开始和结束图像放入.我有开始和结束纬度和经度值,并希望在起点和终点之间绘制叠加,并将起始图像放在起点和结束点上的结束图像上.

我用谷歌搜索但是我发现MapKit得到一个图像并在开始和结束点设置它,找不到第二个图像的任何帮助.

喜欢

annotationView.image=[UIImage imageNamed:@"parkingIcon.png"];
Run Code Online (Sandbox Code Playgroud)

它只为起点和终点设置了一个图像.但是我想为这两点添加不同的图像.

请帮忙.

iphone objective-c mapkit ipad ios

2
推荐指数
1
解决办法
3555
查看次数

当前位置注释的默认外观?

我有以下代码:

- (MKAnnotationView *) mapView:(MKMapView *) mapView viewForAnnotation:(id ) annotation {

    MKPinAnnotationView *customAnnotationView=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:nil] autorelease];

    customAnnotationView.pinColor = MKPinAnnotationColorRed;
    customAnnotationView.animatesDrop = NO;
    customAnnotationView.canShowCallout = YES;

    UIButton *rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
    [rightButton addTarget:self action:@selector(annotationViewClick:) forControlEvents:UIControlEventTouchUpInside];

    customAnnotationView.rightCalloutAccessoryView = rightButton;

    return customAnnotationView;
}
Run Code Online (Sandbox Code Playgroud)

此方法更改地图视图上的每个注释,包括当前位置的蓝色圆圈注释。我只想更改自定义注释,而仅保留当前位置注释。

我怎样才能做到这一点?

mapkit mkannotation mkannotationview ios

2
推荐指数
1
解决办法
1469
查看次数

如何从下面的方法获取新的位置

-(void)mapView:(MKMapView *)mapView 
    annotationView:(MKAnnotationView *)view                  
    didChangeDragState:(MKAnnotationViewDragState)newState 
    fromOldState:(MKAnnotationViewDragState)oldState
Run Code Online (Sandbox Code Playgroud)

iphone mapkit mkannotation ios

2
推荐指数
1
解决办法
426
查看次数