在我的iPhone应用程序,我使用的MKMapView显示位置,第一次显示一个蓝色dot.But当前的位置,如果客场地图拖动,点击当前位置的按钮,它不显示蓝点(但我能够返回当前位置区域)
-(IBAction)currntLctnClick:(id)sender{
[map setCenterCoordinate:map.userLocation.location.coordinate animated:YES];
}
你已经实现了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
,并再次将其删除。
考虑到你说,你可以看到在第一次加载用户的位置,它是安全的假设您已经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;
}
所有这些谁来到这里,通过搜索谷歌地图的解决方案 - 这是你需要设置正确的属性。
雨燕3.0
self.mapView.isMyLocationEnabled=true
[map setShowsUserLocation:YES];
只是检查注释MKUserLocation而在viewForAnnotation方法迭代并返回零如果这是真的。
它的工作原理,那是因为MKUserLocation也mapView.annotations阵列的一部分,你只需要通过它传递不作任何修改。
func mapView(_ mapView: MKMapView, viewFor annotation: MKAnnotation) -> MKAnnotationView? {
guard !(annotation is MKUserLocation) else { return nil }
// your viewForAnnotation code...
}