gpt4 book ai didi

ios - MKMapView - 将 map 滚动限制为方形覆盖

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:01 25 4
gpt4 key购买 nike

我有一个 MKMapView,上面有一个正方形叠加层,描述如下:

   CLLocationCoordinate2D coordsBg[5]={
CLLocationCoordinate2DMake(31.750865,35.180882),
CLLocationCoordinate2DMake(31.740331,35.180882),
CLLocationCoordinate2DMake(31.740331,35.165452),
CLLocationCoordinate2DMake(31.750865,35.165452),
CLLocationCoordinate2DMake(31.750865,35.180882)
};

MKPolygon *bg=[MKPolygon polygonWithCoordinates:coordsBg count:5];
[map addOverlay:bg];

我希望限制用户滚动到叠加层之外。

我可以为此限制 MKMapView ScrollView 吗?还是有其他方法?

谢谢

沙尼

最佳答案

经过几个小时的思考,我得到了这个对我来说非常有效的解决方案。

它混淆了:

这篇文章:set the zoom level of an mkmapview

还有这个链接:restrict mkmapview scrolling来自@Anna Karenina 对我的问题的评论。

这是我的代码:

- (void)mapView:(MKMapView *)mapView regionWillChangeAnimated:(BOOL)animated
{
lastGoodMapRect = mapView.visibleMapRect;
lastGoodRegion = mapView.region;
}

- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{

if (manuallyChangingMapRect) {
manuallyChangingMapRect=NO;
return;
}

if( [mapView zoomLevel] > 16 )
{
[mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:16 animated:YES];
}

MKMapRect visibleRect = mapView.visibleMapRect;
MKMapRect OverlayRect = bg.boundingMapRect;
MKMapRect intersectionRect = MKMapRectIntersection(visibleRect,OverlayRect);

//you can change the min and max zoom off course
if(!MKMapRectEqualToRect(visibleRect,intersectionRect)){
if( [mapView zoomLevel] < 15){

[mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:15 animated:YES];
}else if( [mapView zoomLevel] > 16 )
{
[mapView setCenterCoordinate:lastGoodRegion.center zoomLevel:16 animated:YES];
}else{
manuallyChangingMapRect=YES;
[mapView setVisibleMapRect:lastGoodMapRect animated:YES];
}
}

}

关于ios - MKMapView - 将 map 滚动限制为方形覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11152244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com