我有 2 个坐标,左上角和右下角。我想找到该区域的中心点。现在我有以下方法来计算它。中心点离得很远。当我用
[self.map setRegionTopLeft: CLLocationCoordinate2DMake(21.57524, -157.984514)
bottomRight: CLLocationCoordinate2DMake(21.309766, -157.80766)
animated:YES];
它应该以美国夏威夷州的瓦胡岛为中心。我在这里找到了这个数学,所以我不确定发生了什么。
代码 A - 这太离谱了。它不会让我靠近岛屿。
- (CLLocationCoordinate2D)centerPointFromRegionTopLeft:(CLLocationCoordinate2D)topLeft
bottomRight:(CLLocationCoordinate2D)bottomRight
{
CLLocationCoordinate2D centerPoint;
centerPoint.longitude = (topLeft.longitude + bottomRight.longitude) / 2;
if (fabs(bottomRight.longitude - topLeft.longitude) > 180)
{
if (centerPoint.longitude > 0)
{
centerPoint.longitude = centerPoint.longitude + 180;
} else {
centerPoint.longitude = centerPoint.longitude - 180;
}
}
centerPoint.latitude = asin((sin(bottomRight.latitude) + sin(topLeft.latitude))/2);
return centerPoint;
}
我最初也尝试过这种方法。当我想到矩形的中心时,这就是我脑海中突然出现的东西。如果让我更接近中心应该是什么 - 我可以看到这个岛 - 但它仍然关闭。
代码 B - 我尝试过的原始代码。这更接近我的预期,但仍然没有。
- (CLLocationCoordinate2D)centerPointFromRegionTopLeft:(CLLocationCoordinate2D)topLeft
bottomRight:(CLLocationCoordinate2D)bottomRight
{
CLLocationCoordinate2D centerPoint;
centerPoint.latitude = ((topLeft.latitude + bottomRight.latitude) / 2);
centerPoint.longitude = ((topLeft.longitude + bottomRight.longitude) / 2);
return centerPoint;
}
那么给定一个坐标区域(topLeft,bottomRight)我如何获得中心坐标?这个想法是我应该能够给出任何 2 个坐标并获得中心坐标。
更新*代码 B 有效。我的 topLeft 和 bottomRight 错了。代码 A 把我放在它应该在的地方非常南边和东边一点。