如何找到 MKMapView 当前的缩放级别?
我想知道iphone编程中MKMapView
当前的缩放级别,我该怎么做? 实际上,我有一个应用程序,它需要几个参数(从 MKMapView
中心到角的半径)返回商店详细信息,当我在 MKMapView
上时,半径非常高,当半径较小时它会发生变化,所以我想知道缩放级别并根据该级别设置我的网络服务,如何获取当前 MKMapView
可见区域的缩放级别?
I want to know the current zoom level of MKMapView
in iphone programming, how can I do that?
Actually I have one app, that is taking few arguments(Radius from center to corner of MKMapView
) are returning the store details in that are, when I am on MKMapView
, the radius is very high and it changes when Radius is smaller, so I want to know the zoom level and setup my webservice according to that, How can I get zoom level of current MKMapView
visible area?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
我为其创建了非常简单的辅助子类:
I created very simple helper subclass for it:
您可以在
MKMapView
的region
属性中使用span
。它的定义如下:看看 文档。那里有很好的解释。
You can use
span
inside theregion
property of theMKMapView
. It is defined like this:Take a look at the documentation. It is well explained there.
之前的所有答案都没有考虑当前的地图旋转。 MKMapView 的 longitudeDelta 对于非旋转地图和旋转地图是不同的。
这是一个用于直接地图缩放计算的很棒的函数: https://stackoverflow.com/a/15020534/4923516
这里是我对 Swift 的改进,它考虑了地图旋转并返回当前缩放级别:
您可以在我的存储库中下载示例项目:https://github.com/d-babych/mapkit-wrap
All the previous answers do not take into consideration current map rotation. MKMapView's longitudeDelta differs for non-rotated map and rotated map.
Here is a great function for straight map zoom calculation: https://stackoverflow.com/a/15020534/4923516
And here is my improvement in Swift, that takes into consideration map rotation and returns current zoom level:
You can download sample project in my repo: https://github.com/d-babych/mapkit-wrap
获取当前缩放级别的整数的最简单方法是使用 MapView 函数:regionDidChangeAnimated。此功能可识别变焦的每次变化,并为您提供计算变焦系数的基础。
只需将此函数插入到您的 MapView 类中(适用于 Swift 3.0):
您将获得一个 ZoomFactor 值,其中 0 是您可以放大地图的最近点以及每个更高的值是一个很远很远的变焦...:-)
The easiest way to get an Integer of the current zoom level, is by using the MapView function: regionDidChangeAnimated. This function recognizes every change in zoom and will give you the basis for the calculation of the zoom factor.
Just insert this function into your MapView class (works for Swift 3.0):
And you will get a zoomFactor value out of it, where 0 is the most near point you can zoom into the map and every higher value is a far far away zoom... :-)
如果有帮助,您还可以使用
mapView.camera.altitude
获取当前显示的地图区域的当前海拔高度。当我搜索如何获取地图缩放级别时,这对我很有帮助。
最新语法:
If it helps you can also use
mapView.camera.altitude
to get the current altitude of the currently displayed map region.This is what helped me when I searched how to get the map zoom level.
Latest syntax: