C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了objective-c – 中心和边界之间的MKCoordinateRegion距离大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
(根据评论修改的问题:)

好的,我会尝试以其他方式询问……如何获得此圆形叠加的边框坐标:

(原始问题:)

我的iPhone应用程序遇到了奇怪的问题.@L_800_2@mKCoordinateRegion,中心坐标纬度:51.509980,经度:-0.133700.我使用@L_719_3@mKCoordinateRegionMakeWithDistance并将距离设置为16,093.44米(10英里).

我想得到这个区域的边界点因此我有这个代码

@H_976_15@mKCoordinateRegion region2 = self.mymapView.region; float minLat = region2.center.latitude - (region2.span.latitudeDelta / 2.0); float maxLat = region2.center.latitude + (region2.span.latitudeDelta / 2.0); float minLong = region2.center.longitude - (region2.span.longitudeDelta / 2.0); float maxLong = region2.center.longitude + (region2.span.longitudeDelta / 2.0);

我找到了这个网站,我的测试http://boulter.com/gps/distance/计算了两个坐标之间的距离.当我作为FROM坐标输入时:51.509980和经度:-0.133700(伦敦)和TO坐标:

2011-11-26 01:15:42.830 NearMeTest[3911:11603] MinLAT 51.334381 and MaxLAT 51.684814
2011-11-26 01:15:42.830 NearMeTest[3911:11603] MinLONG -0.352936 and MaxLONG 0.086517

我知道这两个坐标之间的距离是15.40英里而不是预期的10英里.

截图:

 

为何如此不同?当我尝试从不同的中心坐标(东京,纽约)做同样的事情时,结果是正确的10英里.

谢谢你的答复

解决方法

(根据评论修改的答案:)

如果您的意思是想要该圆形覆盖的边界矩形的坐标,请使用overlay的boundingMapRect属性

//"theCircle" is the MKCircle overlay object

CLLOCATIOnCoordinate2D topLeftCoord = 
    MKCoordinateForMapPoint(theCircle.boundingMapRect.origin);

MKMapPoint bottomRightMapPoint = MKMapPointMake (
    MKMapRectGetMaxX(theCircle.boundingMapRect),MKMapRectGetMaxY(theCircle.boundingMapRect));

CLLOCATIOnCoordinate2D bottomRightCoord = 
    MKCoordinateForMapPoint(bottomRightMapPoint);

(原始答案:)

首先,当您在地图视图上调用setRegion时,地图视图几乎总是会修改您请求的区域,以使其适合地图视图.此调整基于地图视图的形状以及是否可以在其固定缩放级别之一正确显示请求的范围.

例如,如果您的地图视图不是正方形,并且您要求两个方向的跨度为10英里,则至少有一个跨度肯定会被调整.即使您要求根据视图的比例设置的跨度,如果地图视图无法在该缩放级别显示切片(或者如果您没有采用地球的虑到曲率).

接下来,latitudeDelta和longitudeDelta定义区域的整个高度和宽度(不是距中心坐标的距离).

因此,屏幕截图中的测试无法与跨度增量进行比较.在屏幕截图中,您正在计算从中心坐标到最小纬度和经度(左下角)的距离,但是跨度增量从右到左,从下到上一直进行. (因此,你认为从中心到角落的距离应该小于增量 – 而不是更多.由于上述原因,它更短但是增量也增加到10以上.)

最后,要获得角坐标(左下角和右上角),这可能是一种更准确的方法

CLLOCATIOnCoordinate2D bottomLeftCoord = 
    [mymapView convertPoint:CGPointMake(0,mymapView.frame.size.height) 
               toCoordinateFromView:mymapView];

CLLOCATIOnCoordinate2D topRightCoord = 
    [mymapView convertPoint:CGPointMake(mymapView.frame.size.width,0) 
               toCoordinateFromView:mymapView];
@H_801_62@

大佬总结

以上是大佬教程为你收集整理的objective-c – 中心和边界之间的MKCoordinateRegion距离全部内容,希望文章能够帮你解决objective-c – 中心和边界之间的MKCoordinateRegion距离所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。