如何在iOS mapKit中实现最大缩放级别?
问题描述:
我知道这个职位:How to get to the max zoomlevel on iOS MKMapView如何在iOS mapKit中实现最大缩放级别?
而这似乎正是我需要解决的问题,但是,这种技术不适合我。
如果我将eyeAltitude设置为50甚至100,则返回相同的地图缩放比例。但是,一旦地图显示,我可以捏缩放到所需的缩放级别。有没有一个解决方案,以编程方式实现在地图视图的初始加载时缩小缩放级别?
编辑:我试过使用setRegion,但问题似乎与使用.satelliteFlyover具体相关。由于图像质量的差异,我需要使用.satelliteFlyover。 进一步编辑:我也发现模拟器似乎给出了一个不同的'原生缩放比',当它在我的设备上运行。我希望有人读这可以提供洞察力!
我正在使用的代码是:
let greenLocation:CLLocationCoordinate2D = CLLocationCoordinate2DMake(CLLocationDegrees(greenX),CLLocationDegrees(greenY))
let altitude:CLLocationDistance = 80
self.greenMap.mapType = .satelliteFlyover
let camera = MKMapCamera(lookingAtCenter: greenLocation, fromEyeCoordinate: greenLocation, eyeAltitude: altitude)
self.greenMap.setCamera(camera, animated: true)
答
我解决了这个问题...使用不同的SDK进行映射。我通过持续测试发现,appleMaps并不总是将图像缩小到特定的缩放级别,并且当您放大超近距离时似乎会绊倒。在某些地方它可以完美缩放,而其他地方则不会 - 作为开发者你可能会感到厌倦的不一致。谷歌地图有更高质量的图像,并没有缩放一致性问题。
答
您可以设置区域,使地图视图比例,以适应。使用此功能。
open func setRegion(_ region: MKCoordinateRegion, animated: Bool)
以下是示例代码。
let map = MKMapView()
let center = CLLocationCoordinate2D(latitude: 115, longitude: 24)
let span = MKCoordinateSpan(latitudeDelta: 0.003, longitudeDelta: 0.003)
let region = MKCoordinateRegion(center: center, span: span)
map.setRegion(region, animated: false)
谢谢@Lumialxk。如果我使用标准的二维卫星图像,这是有效的。然而它是黑暗的,在最放大的水平上质量很差。当我使用'map.maptype = .satelliteFlyover'时,我得到了一个更好的图像,但是我仍然存在这个问题。它会缩放到我知道的标准高度并不是完全缩放,因为我仍然可以捏缩放。在最终产品中,我不希望用户能够缩放变焦,所以我真的需要从一开始就获得变焦。 – matador0227