标签: mapkit

如何每 4-5 秒从 userLocation 获取距离

我不是将它用于行车路线或类似用途。我有一些注释,并希望在用户靠近其中一个注释时触发,这样我就可以提醒用户。

似乎每个 startUpdatingLocation 调用只调用一次 didUpdateToLocation?至少当我在该方法中使用 NSLog 时,我在控制台中只得到一行。不,我不是带着 iphone 四处走动。

那么:设置对 userLocation 的持续监控并获得“回调”的正确方法是什么(在 3-4 秒过去或用户移动 10 米时)?

iphone mapkit userlocation

4
推荐指数
1
解决办法
2456
查看次数

UITableView 在不应该的情况下将触摸事件传递给超级视图

GIKAnimatedCallout示例代码中,双击手势、两指点击手势、缩放手势和捏合手势都从 UITableView 传递到其下面的 MKMapView。我想阻止这一切发生。UITableView 内的触摸事件不应传递到 MKMapView。

我尝试为点击添加 UIGestureRecognizer,并将其设为空方法,但这些触摸事件仍会发送到 MKMapView 以及 UITableView。

通过调试器查看 UITableView 的超级视图层次结构,我发现 UITableView 是 MKMapView 的后代。

我真的不知道如何解决这个问题。任何指示表示赞赏。

cocoa-touch gesture-recognition mapkit ios

4
推荐指数
1
解决办法
2738
查看次数

swift (MapKit) 上的自定义标记图像

我在 MapKit 上使用自定义标记

如何更改自定义标记上的图像宽度和高度?

我的代码:

func mapView(mapView: MKMapView!, viewForAnnotation annotation: MKAnnotation!) -> MKAnnotationView! {

    if (annotation is MKUserLocation) {
        return nil
    }

    let reuseId = "test"

    var anView = mapView.dequeueReusableAnnotationViewWithIdentifier(reuseId)
    if anView == nil {

        anView = MKAnnotationView(annotation: annotation, reuseIdentifier: reuseId)
        anView.image = UIImage(named:"x2.png")
        anView.canShowCallout = true
    }
    else {
        anView.annotation = annotation
    }
    return anView
}
Run Code Online (Sandbox Code Playgroud)

mapkit ios swift

4
推荐指数
1
解决办法
2652
查看次数

为CLPlacemark获取正确的缩放区域

我正在MKLocalSearch搜索某些地方,例如城市或城市街道,以将其显示在MKMapView

我这样显示地标

let loc = placemark.location! //CLLocation of CLPlacemark
var mapRegion = MKCoordinateRegion()
mapRegion.center.longitude = loc.coordinate.longitude
mapRegion.center.latitude = loc.coordinate.latitude
mapRegion.span.latitudeDelta = 0.03 // I choose 0.03 by trying
mapRegion.span.longitudeDelta = 0.03
mapView.setRegion(mapRegion, animated: true)
Run Code Online (Sandbox Code Playgroud)

当地标是城市时,此方法效果很好,因为它以合理的缩放级别显示较大的区域。但是,当我想显示城市中的特定街道(即CLPlacemarks位置)时,它就很远。

现在,我正在寻找一种根据您的“详细信息”计算正确的跨度的方法CLPlacemark(请注意,您不知道CLPlacemark预付款的类型)

有没有办法做到这一点?

cocoa-touch mapkit ios swift

4
推荐指数
1
解决办法
378
查看次数

如何使整个 MKPinAnnotationView 可点击,而不仅仅是正确的附件视图

在以下方法中MKMapViewDelegate

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

    let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "")
    pinAnnotationView.rightCalloutAccessoryView = UIButton(type: .DetailDisclosure)
    pinAnnotationView.canShowCallout = true

    return pinAnnotationView
}
Run Code Online (Sandbox Code Playgroud)

如果我像上面那样做,那么整个视图都是可点击的:

在此处输入图片说明

除此以外:

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

        let pinAnnotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: "")
        let accessoryView = UIButton(frame: CGRectMake(0, 0, 25, 25))
        accessoryView.setImage(UIImage(named: "icon-menu"), forState: .Normal)

        pinAnnotationView.rightCalloutAccessoryView = accessoryView
        pinAnnotationView.canShowCallout = false

        return pinAnnotationView
}
Run Code Online (Sandbox Code Playgroud)

只有右附件视图被点击,为什么?

问题是。怎么做才能使整体可点击MKPinAnnotationView而不仅仅是正确的披露?

mapkit ios swift

4
推荐指数
1
解决办法
462
查看次数

如何启用MKMapView 3D视图?

我在一个窗口中有一个MKMapView,并且pitchEnabled是真的(我已经在调试器中证实了这一点).指南针中间的"3D"东西是灰色的,点击或拖动它什么都不做.选项 - 拖动地图(就像我在Maps.app中所做的那样)也没有做任何事情.

根据我对文档的解释,设置pitchEnabled应该让我使用3D视图,就像Maps.app那样.我错了吗?我还需要做些什么来让我的用户获得3D地图视图吗?

macos mapkit

4
推荐指数
1
解决办法
2766
查看次数

是否可以强制 MapKit 在没有聚类的情况下显示所有注释?

我有两个类都符合MKAnnotation,我想知道,MapKit当用户缩小并显示所有注释时,有没有办法强制不聚集注释?

mapkit mkannotation ios swift

4
推荐指数
2
解决办法
1969
查看次数

如何在swift的地图视图上显示位置?我相信我的代码是最新的,但模拟器没有显示位置或蓝点?

我正在尝试使用 swift 上的地图视图在我的当前位置和地图上显示一个蓝点。但是它没有显示我的位置,也没有显示蓝点我对我的代码非常肯定,但我无法显示它!应该是设置的问题吧?

import UIKit
import MapKit
import CoreLocation

class ViewController: UIViewController {

    @IBOutlet weak var mapView: MKMapView!

    let locationManager = CLLocationManager()
    let regionInMeters: Double = 1000

    override func viewDidLoad() {
        super.viewDidLoad()
        checkLocationServices()
    }


    func setupLocationManager() {
        locationManager.delegate = self
        locationManager.desiredAccuracy = kCLLocationAccuracyBest
    }


    func centerViewOnUserLocation() {
        if let location = locationManager.location?.coordinate {
            let region = MKCoordinateRegion.init(center: location, latitudinalMeters: regionInMeters, longitudinalMeters: regionInMeters)
            mapView.setRegion(region, animated: true)
        }
    }
    func checkLocationServices() {
        if CLLocationManager.locationServicesEnabled() {
            setupLocationManager()
            checkLocationAuthorrization()
        } else {
            // Show …
Run Code Online (Sandbox Code Playgroud)

core-location mapkit ios swift

4
推荐指数
2
解决办法
3966
查看次数

在主(ContentView)SwiftUI视图中以UIViewRepresentable的形式访问MKMapView元素

我正在使用SwiftUI显示地图,如果用户点击了注释,它将在VStack中弹出详细视图。我已经制作了地图视图,并在另一个SwiftUI文件中插入了注释。我还做了详细视图。

如何在主视图文件中访问该地图的注释,以定义一个.tapaction,以便他们将其用于详细视图?

我尝试将视图定义为MKMapView,但无法在另一个SwiftUI视图中为UIViewRepresentable做到这一点。

主视图(ContentView)代码为:

struct ContentView: View {
    @State private var chosen = false

    var body: some View {

        VStack {
            MapView()
            .edgesIgnoringSafeArea(.top)
            .frame(height: chosen ? 600:nil)
            .tapAction {
            withAnimation{ self.chosen.toggle()}
            }

    if chosen {
        ExtractedView()
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

MapView代码为:

struct MapView : UIViewRepresentable {
    @State private var userLocationIsEnabled = false
    var locationManager = CLLocationManager()
    func makeUIView(context: Context) -> MKMapView {
    MKMapView(frame: .zero)

    }
    func updateUIView(_ view: MKMapView, context: Context) {

        view.showsUserLocation = true

        .
        .
        .

            let sampleCoordinates …
Run Code Online (Sandbox Code Playgroud)

mapkit swift swiftui xcode11

4
推荐指数
1
解决办法
2045
查看次数

Swiftui 如何使用 MKOverlayRenderer?

我想在地图上画一条路线。

但结构不使用委托。

struct MapView : UIViewRepresentable {
}

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
}
Run Code Online (Sandbox Code Playgroud)

我能怎么做?

mapkit swiftui

4
推荐指数
1
解决办法
2846
查看次数