我想在iOS地图上的叠加层旁边滑动,这样我就可以获得任何给定点的数据
在Sketch中创建的示例:
如何处理这样的问题?如果您知道使用MapKit创建任何播客,图书馆,我会很高兴与您分享。
您如何建议实施此类功能的过程?
我是否应该专注于使用相关的触摸手势识别器在地图上创建自定义指针,并尝试使用某种回调更新括号中的数据?
也许这个功能已经部分实现了,这只是让这些部分协同工作的问题?
我的代码以覆盖
查看地图 func mapRegion() -> MKCoordinateRegion {
let initialLoc = self.locations[0]
var minLat = initialLoc.latitude
var minLng = initialLoc.longitude
var maxLat = minLat
var maxLng = minLng
let locations = self.locations
for location in locations {
minLat = min(minLat, location.latitude)
minLng = min(minLng, location.longitude)
maxLat = max(maxLat, location.latitude)
maxLng = max(maxLng, location.longitude)
}
return MKCoordinateRegion(
center: CLLocationCoordinate2D(latitude: (minLat + maxLat)/2,
longitude: (minLng + maxLng)/2),
span: MKCoordinateSpan(latitudeDelta: (maxLat - minLat)*1.1,
longitudeDelta: (maxLng - minLng)*1.1))
}
@objc(mapView:rendererForOverlay:) func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
let polyline = overlay as! MulticolorPolylineSegment
let renderer = MKPolylineRenderer(polyline: polyline)
renderer.strokeColor = polyline.color
renderer.lineWidth = 3
return renderer
}
func polyline() -> MKPolyline {
var coords = [CLLocationCoordinate2D]()
let locations = self.locations
for location in locations {
coords.append(CLLocationCoordinate2D(latitude: location.latitude,
longitude: location.longitude))
print("dodalo")
}
return MKPolyline(coordinates: &coords, count: run.locations.count)
}
func loadMap() {
if run.locations.count > 0 {
mapView.isHidden = false
print(self.locations)
// Set the map bounds
mapView.region = mapRegion()
// Make the line(s!) on the map
let colorSegments = MulticolorPolylineSegment.colorSegments(forLocations: self.locations)
mapView.addOverlays(colorSegments)
} else {
// No locations were found!
mapView.isHidden = true
UIAlertView(title: "Error",
message: "Sorry, this run has no locations saved",
delegate:nil,
cancelButtonTitle: "OK").show()
}
}
PS。我知道这个问题可能被认为是基于意见的,但我不知道更好的地方问它。请建议我一个具有相同概率观点的更好的地方,而不是贬低。与stackoverflow相比,几乎没有访问StackExchange代码审查