显示当前位置,以及 iphone 中的另一个位置

Posted

技术标签:

【中文标题】显示当前位置,以及 iphone 中的另一个位置【英文标题】:showing current location ,along with another location in iphone 【发布时间】:2010-05-07 08:54:39 【问题描述】:

每当我们加载地图视图时,它都会自动显示当前用户的位置。在我的情况下,我在地图上显示另一个位置,这样地图会加载当前位置并缩放到我给出的位置..但是,当前位置点没有显示(自动出现的蓝色位置..)。 我给了 mapView.showCurrentLocation=TRUE;但它没有显示。 所以任何人都可以告诉它的工作方式,它应该说当前位置标记,然后缩放到我给出的点。 谢谢

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
    static NSString *defaultPinID = @"CameraAnnotation";
    MKPinAnnotationView *retval = nil;
    static int postag=1;

    (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:defaultPinID];
    if(annotation=MapView.userLocation)
    
        return nil;
    
    // If we have to, create a new view
    else    if (retval == nil)
    
        retval = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:defaultPinID] autorelease];

        UIButton *myDetailButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
        myDetailButton.frame = CGRectMake(0, 0, 50, 23);
        myDetailButton.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter;
        myDetailButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
        myDetailButton.tag=postag;
        postag++;
        [myDetailButton addTarget:self action:@selector(showLinks:) forControlEvents:UIControlEventTouchUpInside];
        retval.rightCalloutAccessoryView = myDetailButton;
        [retval setPinColor:MKPinAnnotationColorRed];
        retval.animatesDrop = YES;
        retval.canShowCallout = YES;
    

    return retval;

【问题讨论】:

您是在签入模拟器还是设备? 【参考方案1】:

在模拟器中,默认的当前位置是库比蒂诺。这是您所看到的,它将在设备中正常工作。

您应该使用 CLLocationManager 来获取当前位置。

- (void)applicationDidFinishLaunching:(UIApplication *)application  

self.locationManager = [[[CLLocationManager alloc] init] autorelease];
self.locationManager.delegate = self; // Tells the location manager to send updates to this object
[locationManager startUpdatingLocation];

更改图钉颜色

MKPinAnnotationView   *pin=[[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"pin"]autorelease];

[pin setPinColor:MKPinAnnotationColorRed];

一切顺利。

【讨论】:

感谢您的回复,但我仅将其用于显示其他位置。但我的问题是地图直接放大到该位置。所以当前位置不直接可见。我正在尝试增加跨度值的一些实现方式,但不知道它是否正确,谢谢.... 查看此链接以使用缩放级别。 troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview 。如果您只想在地图中显示一个位置,您可以根据您的要求手动调整跨度值。 谢谢您,将使用它。我目前遇到了另一个问题。也就是说,我在此处找到了另一个位置以及当前位置,并为这些位置添加了注释,以便用户可以去单击注释时转到另一个屏幕。但我的问题是注释也来到了当前位置..我想你有我的问题和引脚颜色我也需要为他们显示不同的(红色表示自定义引脚,蓝色表示用户当前位置)..抱歉麻烦,非常感谢 非常感谢 Warrior 的回复和耐心。你的回答是对的,但你不明白我想要自定义视图的要求。也就是说,当前位置应该是蓝色的 pin,另一个是红色的。 - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id )annotation 在上述方法中,我们如何识别哪个是当前位置,哪个是我们正在显示的位置..跨度> 查看此堆栈溢出答案***.com/questions/1853144/…【参考方案2】:

查看此问题上的 answer 以设置 MkMapView 缩放级别以包含附加到它的所有 MKAnnotations

【讨论】:

谢谢,我已经通过增加我显示的位置的跨度值来设置预期当前位置。一些他们是如何靠近的。

以上是关于显示当前位置,以及 iphone 中的另一个位置的主要内容,如果未能解决你的问题,请参考以下文章

如何通过iphone应用程序中的代码获取用户的当前位置?

iPhone应用程序中的地理位置

Lat,Long 值不准确到 iphone 中的当前位置

如何检查一个位置坐标是不是落在android中的另一个位置坐标半径

如何在iphone的地图中显示从当前位置到目的地位置的方向

MapKit iPhone 开发;当前位置和注释