gpt4 book ai didi

ios - 如何将由 NE 和 SW 坐标组成的特定边界拟合到可见 map View 中?

转载 作者:可可西里 更新时间:2023-11-01 04:19:25 31 4
gpt4 key购买 nike

我需要在 map 中设置一定的边界。我通过调用谷歌地理编码器和读取视口(viewport)属性得到了限制,它看起来像:

{
northeast = {
lat = "30.4212235";
lng = "-97.486942";
};
southwest = {
lat = "30.1128403";
lng = "-97.99917959999999";
};
}

然后我将它们转换成 CLLocationCoordinate2D

NSDictionary *viewport = [[[results objectAtIndex:0] objectForKey:@"geometry"] 
objectForKey:@"viewport"];
NSDictionary *NEDictionary = [viewport objectForKey:@"northeast"];
NSDictionary *SWDictionary = [viewport objectForKey:@"southwest"];

CLLocationCoordinate2D SWCoordinate =
CLLocationCoordinate2DMake(
[[SWDictionary objectForKey:@"lat"] floatValue],
[[SWDictionary objectForKey:@"lng"] floatValue]
);
CLLocationCoordinate2D NECoordinate =
CLLocationCoordinate2DMake(
[[NEDictionary objectForKey:@"lat"] floatValue],
[[NEDictionary objectForKey:@"lng"] floatValue]
);

我知道我需要从这些坐标生成一个 MKMapRect(或 MKMapRegion,以更容易的为准)然后 [mapView setVisibleRect:newRect animated:YES](或 [mapView setRegion:newRegion animated:YES] 但我不太确定如何到达那里。我需要一种方法将边界转换为适当的数据结构,例如:

- (MKMapRect) mapRectThatFitsBoundsSW:(CLLocationCoordinate2D)sw 
NE:(CLLocationCoordinate2D)ne {
// CGFloat x = ??
// CGFloat y = ??
// CGFloat width = ??
// CGFloat height = ??
MKMapRect mapRectFromBounds = MKMapRectMake(x,y,width,height);
return mapRectFromBounds;
}

有什么想法吗?

最佳答案

有几种方法可以做到这一点。

您可以通过确定 center 点创建一个 MKCoordinateRegion,然后 span 是角之间的绝对度差。

或者您可以使用 MapKit 函数 MKMapPointForCoordinate 创建一个 MKMapRect。要获取原点,请找出西北坐标并将其转换为MKMapPoint。要获取 widthheight,获取角之间 ma​​ppoints 的绝对差(将角从坐标转换为 MKMapPoint首先使用函数)。

另一种快速方法是使用 MKMapRectUnion 函数的小技巧。从每个坐标创建一个零大小的 MKMapRect,然后使用以下函数将两个矩形合并为一个大矩形:

MKMapPoint swPoint = MKMapPointForCoordinate(SWCoordinate);
MKMapRect swRect = MKMapRectMake(swPoint.x, swPoint.y, 0, 0);

MKMapPoint nePoint = MKMapPointForCoordinate(NECoordinate);
MKMapRect neRect = MKMapRectMake(nePoint.x, nePoint.y, 0, 0);

MKMapRect rect = MKMapRectUnion(swRect, neRect);

请记住, map View 仍会根据 map View 的比例和所需的缩放比例对您请求的矩形进行自己的调整。 (如果您想知道调整后的矩形是什么,请调用 map View 的 mapRectThatFits: 方法。)

关于ios - 如何将由 NE 和 SW 坐标组成的特定边界拟合到可见 map View 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496551/

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