如何在MKMapview中使用zoomRect缩放贴图区域并禁用当前位置单击事件?

问题描述:

我做了一个缩放放置在地图上的所有引脚的演示。如何在MKMapview中使用zoomRect缩放贴图区域并禁用当前位置单击事件?

1)我已经使用zoomRect进行缩放能见度所有引脚,但它没有显示正确。

2)我的第二个问题,我有我的当前位置以及所有的引脚,当我在针点击它给了我所有的细节关于该引脚, 但是当我点击当前的位置针它已经崩溃给我解决方案,我不想点击我当前的位置pin 如何禁用和删除点击事件。

我用: -

if (annotation == mapView.userLocation) 
    { 
     return nil; 
    } 

,但它只会隐藏针不会禁用引脚。

我的代码是

MKMapRect zoomRect = MKMapRectNull; 
     for (id <MKAnnotation> annotation in self.mapViewMap.annotations) 
     { 
      MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
      MKMapRect pointRect = MKMapRectMake(annotationPoint.x , annotationPoint.y ,0.1, 0.1); 
      zoomRect = MKMapRectUnion(zoomRect, pointRect); 
     } 
     [self.mapViewMap setVisibleMapRect:zoomRect animated:YES]; 

图像输出

enter image description here

预期成果是像

enter image description here

谢谢你在前进,我希望你能给我回答两个。谢谢很多。

为1),你可以在showAnnotations:animated:功能使用内置see documentation 否则,你可以试试这个:

func zoomToAllAnnotations() { 
    // Exclude if you don't want to include the user's location 
    let annotationPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate) 
    var zoomRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
    for annotation in mapView.annotations { 
     let annotationPoint = MKMapPointForCoordinate(annotation.coordinate) 
     let pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1) 
     zoomRect = MKMapRectUnion(zoomRect, pointRect) 
    } 
    mapView.setVisibleMapRect(zoomRect, animated: true) 
} 

关于2),你可以尝试pinView.canShowCallout = false您currentLocation注释。这里是link to documentation