iOS MapKit:如何在叠加层旁边滑动并相应地获取数据

时间:2016-10-04 11:45:22

标签: ios swift mapkit

我想在iOS地图上的叠加层旁边滑动,这样我就可以获得任何给定点的数据

在Sketch中创建的示例:

enter image description here enter image description here

如何处理这样的问题?如果您知道使用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代码审查

0 个答案:

没有答案