在我的 iphone 应用程序中,我使用 MKMapview 来显示位置,这是第一次用蓝点显示当前位置。但是如果在地图中拖动并单击当前位置按钮,它不会显示蓝点(但我能够返回当前位置区域)
-(IBAction)currntLctnClick:(id)sender{
[map setCenterCoordinate:map.userLocation.location.coordinate animated:YES];
}
考虑到您说您可以在首次加载时看到用户位置,因此可以安全地假设您已setShowsUserLocation:
设置为 YES。
你- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
在你的视图控制器中实现了吗?
如果是这样,请务必避免为内置的用户位置标记提供注释视图。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation
{
//check annotation is not user location
if([annotation isEqual:[mapView userLocation]])
{
//bail
return nil;
}
static NSString *annotationViewReuseIdentifer = @"map_view_annotation";
//dequeue annotation view
MKPinAnnotationView *annotationView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:annotationViewReuseIdentifer];
if(!annotationView)
{
annotationView = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:annotationViewReuseIdentifer];
}
//set annotation view properties
[annotationView setAnnotation:annotation];
return annotationView;
}
你实现了这个viewForAnnotation
功能吗?您是否正在检查您没有为 MKUserLocation 绘制(或未能绘制)不同类型的引脚?
用蓝点显示您的当前位置
- (void)viewDidLoad
{
yourMapView.showsUserLocation=YES;
}
单击按钮导航到您当前的位置
-(IBAction)currntLctnClick:(id)sender
{
MKCoordinateRegion location = MKCoordinateRegionMakeWithDistance(yourMapView.userLocation.coordinate, 10000.0, 10000.0);
[yourMapView setRegion:location animated:YES];
}
编辑
或者,如果您的蓝点仍然不可见,那么只需MapView
从 xib 中删除并再次拖放它。
对于所有通过搜索 GoogleMaps 解决方案来到这里的人 - 这是您需要设置为 true 的属性。
斯威夫特 3.0
self.mapView.isMyLocationEnabled=true
[map setShowsUserLocation:YES];
只需在 viewForAnnotation 方法中迭代时检查注释是否为MKUserLocation,如果为真则返回 nil。
它是这样工作的,因为 MKUserLocation 也是 mapView.annotations 数组的一部分,您只需要通过它而不做任何修改。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard !(annotation is MKUserLocation) else { return nil }
// your viewForAnnotation code...
}
只需添加,如果您使用的是 Interface Builder,请选择 Map View 并在 Attributes 部分中,确保User Location
选中: