如何知道蓝点是否在我的 mapView 的可见部分内?
How to know if blue dot is within visible portions of my mapView?
我正在使用 MKMapView。当用户以指示用户当前位置的蓝点从他的视线中消失的方式滚动地图时,点击 mapView 上的按钮会将他带回包含该蓝点的部分。我只是通过设置
self.mapView.centerCoordinate = self.mapView.userLocation.coordinate;
关于按钮的操作方法。
但是一旦他滚动离开蓝点,我就必须更改按钮的图像。那么,我怎么知道蓝点是否不在用户当前可见的地图部分中。
您可以向地图视图添加委托,mapView:regionDidChangeAnimated:
,以便在发生滚动事件时通知您。
在该方法的实现中,您可以获得 visibleMapRect
并使用 MKCoordinateRegionForMapRect
来获取地图视图的相关真实世界坐标。然后你可以判断当前用户位置是否可见(这需要简单的计算,我认为没有内置方法)。
您可以使用内置的布尔标志 self.mapView.userLocationVisible
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
//do something here
if(self.mapView.userLocationVisible){
//Blue dot visible
}
else{
//Blue dot hidden
}
//do something here
}
对于代码感兴趣的人:
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
if (MKMapRectContainsPoint(self.mapView.visibleMapRect, MKMapPointForCoordinate(self.mapView.userLocation.coordinate))) {
NSLog(@"blue dot visible");
}else{
NSLog(@"blue dot not visible");
}
}
我正在使用 MKMapView。当用户以指示用户当前位置的蓝点从他的视线中消失的方式滚动地图时,点击 mapView 上的按钮会将他带回包含该蓝点的部分。我只是通过设置
self.mapView.centerCoordinate = self.mapView.userLocation.coordinate;
关于按钮的操作方法。 但是一旦他滚动离开蓝点,我就必须更改按钮的图像。那么,我怎么知道蓝点是否不在用户当前可见的地图部分中。
您可以向地图视图添加委托,mapView:regionDidChangeAnimated:
,以便在发生滚动事件时通知您。
在该方法的实现中,您可以获得 visibleMapRect
并使用 MKCoordinateRegionForMapRect
来获取地图视图的相关真实世界坐标。然后你可以判断当前用户位置是否可见(这需要简单的计算,我认为没有内置方法)。
您可以使用内置的布尔标志 self.mapView.userLocationVisible
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
//do something here
if(self.mapView.userLocationVisible){
//Blue dot visible
}
else{
//Blue dot hidden
}
//do something here
}
对于代码感兴趣的人:
-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{
if (MKMapRectContainsPoint(self.mapView.visibleMapRect, MKMapPointForCoordinate(self.mapView.userLocation.coordinate))) {
NSLog(@"blue dot visible");
}else{
NSLog(@"blue dot not visible");
}
}