如何找到可见MKMapView可见屏幕区域的半径?

2023-12-08

我想知道iPhone屏幕中可见区域的半径,因为我会缩小和放大可见区域会发生变化,所以我想知道该特定区域的半径,我该怎么做?


它不是所需的半径。

您需要使用mapView 中的region 参数。

查一下苹果文档,里面说的很清楚了。

完成本教程。它会对你有很大帮助

icode 博客 Mapkit 演示

具体来说你需要设置这样的东西..

MKCoordinateSpan span = [self coordinateSpanWithMapView:self centerCoordinate:centerCoordinate andZoomLevel:zoomLevel];
MKCoordinateRegion region = MKCoordinateRegionMake(centerCoordinate, span);
[self setRegion:region animated:animated];

其中跨度可以计算为

- (MKCoordinateSpan)coordinateSpanWithMapView:(MKMapView *)mapView
                         centerCoordinate:(CLLocationCoordinate2D)centerCoordinate
                             andZoomLevel:(NSUInteger)zoomLevel
{
// convert center coordiate to pixel space
double centerPixelX = [self longitudeToPixelSpaceX:centerCoordinate.longitude];
double centerPixelY = [self latitudeToPixelSpaceY:centerCoordinate.latitude];

// determine the scale value from the zoom level
NSInteger zoomExponent = 20 - zoomLevel;
double zoomScale = pow(2, zoomExponent);

// scale the map’s size in pixel space
CGSize mapSizeInPixels = mapView.bounds.size;
double scaledMapWidth = mapSizeInPixels.width * zoomScale;
double scaledMapHeight = mapSizeInPixels.height * zoomScale;

// figure out the position of the top-left pixel
double topLeftPixelX = centerPixelX - (scaledMapWidth / 2);
double topLeftPixelY = centerPixelY - (scaledMapHeight / 2);

// find delta between left and right longitudes
CLLocationDegrees minLng = [self pixelSpaceXToLongitude:topLeftPixelX];
CLLocationDegrees maxLng = [self pixelSpaceXToLongitude:topLeftPixelX + scaledMapWidth];
CLLocationDegrees longitudeDelta = maxLng - minLng;

// find delta between top and bottom latitudes
CLLocationDegrees minLat = [self pixelSpaceYToLatitude:topLeftPixelY];
CLLocationDegrees maxLat = [self pixelSpaceYToLatitude:topLeftPixelY + scaledMapHeight];
CLLocationDegrees latitudeDelta = -1 * (maxLat - minLat);

// create and return the lat/lng span
MKCoordinateSpan span = MKCoordinateSpanMake(latitudeDelta, longitudeDelta);
return span;
}

干杯:)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何找到可见MKMapView可见屏幕区域的半径? 的相关文章

随机推荐

  • 初始化 Objective-C 类 ivar,它是一个 C 数组

    我的 Obj C 类中有一个 ivar 它是一个 C 数组 我对使其成为 Obj C 属性不感兴趣 够简单的 现在 在我的类的 init 方法中 我想使用 C 数组简写 init 为该数组播种一些值 如下面的 m 所示 但我相当肯定这是创建
  • Android setShareIntent 在片段内

    一 背景 我有一个屏幕 上面有 ShareActionProvider and a ViewPager 使用片段 我希望做的是从当前可见片段内部获取一些信息来创建意图 然后我就能够在 ShareActionProvider 上设置意图 这是
  • 如何在rmarkdown中的pdf_document中渲染htmlTable包中的表格?

    在 rmarkdown 在 RStudio 中 中 我使用 htmlTable 包在 html 文档中生成漂亮的表格 现在我想要在渲染 pdf 文档时得到相同的结果 表格未正确呈现 如何让 rmarkdown 在我的 pdf 文档中生成表格
  • 源映射必须有 .map 扩展名吗?

    如果我创建一个源映射 我是否必须给它一个 map 扩展名 或者我可以将其命名为 foo 只要它具有正确的标头 如果有人能指出这方面的文档 我将不胜感激 它可以有任何扩展名 在压缩 缩小 原始文件中 您放入sourceMappingUrl评论
  • 通过拖放文件或文件夹来启动 Swift OSX 应用程序

    我试图弄清楚如何通过拖放文件或文件夹来在 OSX 上启动 Swift 应用程序 并让它将拖放资源的完整路径视为参数 首先 在 项目导航器 根节点 中选择您的项目 然后转到 信息 选项卡以声明您的应用程序支持的文件类型 它可以窄到 仅 CSV
  • Outlook 自动化 - 更改发件人帐户

    我正在自动化 Outlook 并且需要控制电子邮件的发件人身份 用户将在 Outlook 中设置两个或多个帐户 我需要能够选择从哪个帐户发送电子邮件 有任何想法吗 需要 Outlook 2003 及以上版本支持 我正在使用 Delphi 2
  • 是什么原因造成的,当数值大于一定位数时,结果会不同呢?

    非常抱歉 在尝试完所有案例之前 我急忙发邮件向大家说声抱歉 根据你的回答 我尝试并推翻了之前的想法 随着位数的变化 我很困惑 我没有测试多少位数字是正常的 但我相信这个例子应该可以解释 字符串类型与数字类型比较时 当位数大于一定值时 只返回
  • -replace 不将字符串替换为“()”

    我正在尝试在 PowerShell 中替换包含括号的字符串 但是 当我尝试这样做时 它不起作用 知道我哪里出错了吗 我应该做什么来替换包含的字符串 with replace在 PowerShell 中 a Some Text with ro
  • 声明结构体字段对象类型时,我必须在这里使用什么样的生命周期参数

    这就是我的代码的样子 我正在尝试在我的内部使用一个实现的结构ShapeRenderer构造并使用它的方法 形状 rs use super core pub struct ShapeRenderer lt a gt core renderer
  • 添加数据时ng-repeat不更新列表

    我的问题是 ng repeat 不会自动更新数据 当我在代码中按添加引脚时 该元素会正确添加到数据库中 如果我重新加载页面 数据会正确显示 但不会像角度那样显示 据记录 更新和删除工作正常 提前致谢 这是我的 app js 代码 var a
  • ASP.NET MVC3 - 使用 Javascript 的错误

    我正在尝试使用 Ajax BeginForm 从我的控制器发布 Json 结果 我正在使用 MVC3 当 Json 结果被调用时 它应该被发送到 javascript 函数并使用提取对象 var myObject content get r
  • 显示优惠券说明 woocommerce

    我试图在购物车页面应用优惠券 10 后显示优惠券描述 要显示总计 我正在使用 woocommerce gt cart gt cart contents total 如何显示优惠券说明 由于你没有提到你想要在哪里有优惠券说明 我之前已经打印了
  • 聚合数据帧列表并存储所有结果

    我有 9 个数据框的列表 每个数据框大约有 100 行和 5 6 列 我想根据所有数据帧中另一个列中指定的组来聚合列中的值 并将所有结果存储在单独的数据框中 为了阐明这一点 请考虑一个列表 1 Date Group Age Nov A 13
  • Hibernate 不会完全刷新实体子级

    我使用 Hibernate 5 1 0 Final 我的GenericDAO类主要方法 public T save T entity entityManager getTransaction begin entityManager pers
  • 如何删除 Symfony 2.7 中的弃用警告?

    Symfony 在日志和控制台中输出了可怕的 自 2 6 版本以来已弃用 并将在 3 0 中删除 错误 我遵循了我发现的所有声称可以解决该问题的指南 包括升级 sensio distribution bundle 并将 E USER DEP
  • 是否可以重新加载相同的 FXML/Controller 实例?

    Goal Implement a standard Settings GUI window Categories in a ListView on the left and the corresponding options in a Pa
  • OpenGL 打包正常

    我试图理解使用之间的区别GL INT 2 10 10 10 REV对于我的数据的正常情况 V S GLbyte 目前我正在将法线加载到glm vec4我这样包装它 int32 t floatToSignedNormalizedByte fl
  • 如何更改视频播放速度

    我想知道是否可以在 iPhone 应用程序中更改视频播放速度 我们希望用户对着麦克风大喊以加快播放速度并结束 您必须使用 setCurrent PlaybackRate
  • 在 Facebook 或 Twitter 授权后存储和检索用户收到的令牌

    您好 我目前正在尝试编写一个 MVC5 应用程序 该应用程序能够在通过 facebook 或 twitter 授权后存储用户收到的令牌 我想将其存储在数据库中而不是 cookie 中 并在用户将来的任何 API 请求和登录尝试中使用它 这样
  • 如何找到可见MKMapView可见屏幕区域的半径?

    我想知道iPhone屏幕中可见区域的半径 因为我会缩小和放大可见区域会发生变化 所以我想知道该特定区域的半径 我该怎么做 它不是所需的半径 您需要使用mapView 中的region 参数 查一下苹果文档 里面说的很清楚了 完成本教程 它会