【发布时间】:2018-03-19 19:28:06
【问题描述】:
如果特定的白天时间在夜间之间,我正在尝试在 MKMapView 上添加夜间模式覆盖/标记等。挑战是在当前时间介于夜间之间的特定位置添加叠加层或标记。
您可以看到附加的图像。它显示了美国的不同州和底部的日期滑块小部件。当我滑入时,日期和时间会改变。我必须在不同状态的地图滑块中显示选定时间的白天和黑夜...
当滑块滑动到夜间时间时,地图应在时间介于夜间时间之间的位置/州的任何(右/左)方向上显示动画夜间叠加层。
尝试过的方法
第一
我可以在完整地图上添加一个叠加层以显示为 nightMode 这就是我尝试过的方式。 当滑块时间在 19:00 到 07:00 之间时,我在地图上添加了一个深色叠加层。
func addNightModeOverLay() {
if (self.nightMode == nil){
let mapRadius = CLLocationDistance(exactly: MKMapRectWorld.size.height)!
self.nightMode = MKCircle(center: mapView.centerCoordinate, radius: mapRadius)
self.mapView.add(nightMode!)
}
}
func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
if overlay.isKind(of: MKCircle.self) {
let view = MKCircleRenderer(overlay: overlay)
view.fillColor = UIColor.black.withAlphaComponent(0.2)
return view
}
return MKOverlayRenderer(overlay: overlay)
}
当滑块时间在 07:00 到 18:00 之间时,我正在从地图中移除深色叠加层。
func removeNightModeOverLay() {
if let nightMode = self.nightMode {
self.mapView.remove(nightMode)
self.nightMode = nil
}
}
地图视图上暗层叠加的简单开/关效果。
第二
我还可以将带有自定义图像的标记添加到全屏并使用 UIView.animate with duration 从源 Lat Lng 到目标 Lat Lng 进行动画处理,但无法处理动画方向和速度。
问题是
1:仅在选定时间有夜晚的位置添加夜间模式
2:随着时间在白天和黑夜之间变化,夜间叠加层应该会在 mapView 上以动画形式出现。
我不确定如何获得这个结果,或者即使有一个很好的方法来实现它。对此的任何帮助将不胜感激。
【问题讨论】:
-
您能告诉我您要添加哪个深色叠加层吗?
标签: ios swift mapkit mkmapview mkannotation