【发布时间】:2016-07-04 22:38:45
【问题描述】:
我在 IOS 应用程序中有一个 MKMapView,它使用缓存的本地图块,效果很好。可以缩放、移动等...
但是,当我添加注释或多段线时,它仍然可以正常工作,直到缩放达到某个缩放级别,然后注释和多段线下的图块不会显示,但所有其他都可以。
Zoomed in one two many levels.
如果我删除注释/线条,地图会正确放大,并且非常适合注释/线条所在的区域。
有什么想法吗?
我将其简化为最小的测试用例。这运行良好,直到您放大,然后折线下的任何图块都会消失。缩小,它们重新出现。
import Foundation
import UIKit
import MapKit
class MyController: UIViewController, MKMapViewDelegate {
@IBOutlet weak var mapView: MKMapView!
var overlay:MKTileOverlay = MKTileOverlay(URLTemplate: "https://services.arcgisonline.com/ArcGIS/rest/services/USA_Topo_Maps/MapServer/tile/{z}/{y}/{x}.jpg");
override func viewDidLoad() {
mapView.delegate = self
mapView.showsUserLocation = true;
overlay.maximumZ = 15;
overlay.minimumZ = 12;
overlay.canReplaceMapContent = true
mapView.addOverlay(overlay)
var points: [CLLocationCoordinate2D] = [CLLocationCoordinate2D]()
points.append(CLLocationCoordinate2D(latitude: 40.7608, longitude: -111.8910));
points.append(CLLocationCoordinate2D(latitude: 40.8894, longitude: -111.8808));
var polyline = MKPolyline(coordinates: &points, count: points.count)
mapView.addOverlay(polyline)
let region = MKCoordinateRegion(center: points[0], span: MKCoordinateSpan(latitudeDelta: 0.05, longitudeDelta: 0.05))
mapView.setRegion(region, animated: false)
}
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if overlay is MKPolyline {
var polylineRenderer = MKPolylineRenderer(overlay: overlay)
polylineRenderer.strokeColor = UIColor.blueColor()
polylineRenderer.lineWidth = 5
return polylineRenderer
} else if (overlay is MKTileOverlay) {
let renderr = MKTileOverlayRenderer(overlay: overlay)
return renderr
}
return nil
}
}
【问题讨论】: