gpt4 book ai didi

iphone - 计算包含所有引脚的 MKMapRect

转载 作者:行者123 更新时间:2023-12-03 18:41:14 31 4
gpt4 key购买 nike

我正在尝试放大 map ,重点关注与该 map 关联的所有图钉。我已将该信息保存在我的 map 属性中。

我从这个开始,但它还没有工作:

    double maxLatitude = 0;
double minLatitude = 0;

double maxLongitude = 0;
double minLongitude = 0;

for (MKAnnotation *address in self.map.locations) {
// Latitude
if ([address.latitude doubleValue] > 0) {
maxLatitude = MAX(maxLatitude, [address.latitude doubleValue]);
}
else {
minLatitude = MAX(abs(minLatitude), abs([address.latitude doubleValue]));
}

// Longitude
if ([address.longitude doubleValue] > 0) {
maxLongitude = MAX(maxLongitude, [address.longitude doubleValue]);
}
else {
minLongitude = MAX(abs(minLongitude), abs([address.longitude doubleValue]));
}
}
double centerLatitude = (maxLatitude - abs(minLatitude)) / 2;
centerLatitude *= [self calculateSignWithFirstValue:maxLatitude secondValue:minLatitude];

double centerLongitude = (maxLongitude - abs(minLongitude)) / 2;
centerLongitude *= [self calculateSignWithFirstValue:maxLongitude secondValue:minLongitude];

//用坐标创建一些 MKMapRect?

我认为我不理解 MKMapRect,因为当我尝试做这样的事情时:

    CLLocationCoordinate2D theOrigin = CLLocationCoordinate2DMake(32, -117);
MKMapRect mapRect;
mapRect.origin = MKMapPointForCoordinate(theOrigin);
mapRect.size = MKMapSizeMake(10, 10);

我被放到了海洋而不是圣地亚哥。不确定 MKMapRect 发生了什么。

最佳答案

/** 
* Return a region covering all the annotations in the given array.
* @param annotations Array of objects conforming to the <MKAnnotation> protocol.
*/
+(MKCoordinateRegion) regionForAnnotations:(NSArray*) annotations
{
double minLat=90.0f, maxLat=-90.0f;
double minLon=180.0f, maxLon=-180.0f;

for (id<MKAnnotation> mka in annotations) {
if ( mka.coordinate.latitude < minLat ) minLat = mka.coordinate.latitude;
if ( mka.coordinate.latitude > maxLat ) maxLat = mka.coordinate.latitude;
if ( mka.coordinate.longitude < minLon ) minLon = mka.coordinate.longitude;
if ( mka.coordinate.longitude > maxLon ) maxLon = mka.coordinate.longitude;
}

CLLocationCoordinate2D center = CLLocationCoordinate2DMake((minLat+maxLat)/2.0, (minLon+maxLon)/2.0);
MKCoordinateSpan span = MKCoordinateSpanMake(maxLat-minLat, maxLon-minLon);
MKCoordinateRegion region = MKCoordinateRegionMake (center, span);

return region;
}

// usage
MKCoordinateRegion region = [XXXX regionForAnnotations:self.mapView.annotations];
[self.mapView setRegion:region animated:YES];

MKMapView 缩放到离散间隔,这意味着如果您缩放随机区域,它将选择最近的缩放间隔。这可能与图 block 分辨率有关,但据我所知没有记录。

关于iphone - 计算包含所有引脚的 MKMapRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12232153/

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