Tracking MKMapView centerCoordinate while panning

前端 未结 1 1157
逝去的感伤
逝去的感伤 2020-12-03 12:54

I\'m implementing a map feature in my app where I allow the user to set their current location by panning around.

All this time, I want to have an MKAnnotatio

相关标签:
1条回答
  • 2020-12-03 13:10

    I suggest not using an actual id<MKAnnotation> at all (at least for this "current location setting" mode).

    Instead:

    1. Add a view (eg. UIImageView) containing an image of a pin (or whatever icon you like) in front of the map view.
    2. This pin view should not be a subview of the map view.
    3. The pin view should be a subview of the same view that the map view is a subview of (eg. both should be subviews of the same superview).
    4. The pin view should be sized and positioned such that it appears above the center of the map view (you could make the pin view have the same frame and the same autolayout/autoresizing logic as the map view so they stay visually synchronized regardless of screen size or orientation).
    5. If using a UIImageView, set its content mode to "center" and background color to "clear" (default is clear).
    6. The pin view should have user interaction disabled on it so that the user can still interact with the map view behind it. As the user pans or zooms the map view, the pin view in front will seem to move instantly.
    7. If necessary, the app can get the location coordinates from mapView.centerCoordinate in the regionDidChangeAnimated: MKMapViewDelegate method (or pan/pinch gesture recognizers) or only when the user says they're done positioning. I don't recommend using a timer (especially every 0.00001s) to query the current center coordinate.
    8. When the user indicates that the current position is where they want to finally place the annotation, you can then create and add an actual annotation at that coordinate and hide the "location setting mode" pin view.
    0 讨论(0)
提交回复
热议问题