Ich habe eine MKMapView in einer IOS App mit Cache-lokalen Kacheln, die gut funktioniert. Kann zoomen, sich bewegen, etc ...MapView mit Polyline oder Annotation verlieren Kachel auf Zoom
Wenn ich jedoch entweder Annotation oder eine Polylinie hinzufüge, funktioniert es immer noch gut, bis Zoom zu einer bestimmten Zoomstufe kommt, dann die Kacheln unter den Anmerkungen und Polylinien nicht auftauchen, aber allen anderen geht es gut.
Zoomed in one two many levels.
Wenn ich die Anmerkungen/Linien zu entfernen, zoomt die Karte korrekt in und funktioniert gut für den Bereich der Anmerkungen/Linien in. Irgendwelche Ideen
gewesen wären?
Ich reduzierte dies auf den kleinsten Testfall. Dies funktioniert bis zum Vergrößern, dann verschwinden alle Kacheln unter der Polylinie. Verkleinern Sie sie und sie erscheinen wieder.
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
}
}