MKMapView настроить аннотацию UserLocation - PullRequest
3 голосов
/ 09 марта 2011

Я хочу настроить аннотацию userLocation MKMapView, нарисовать стрелку заголовка, как в официальном приложении карты.

Я пытаюсь сделать это в viewForAnnotation:

 - (MKAnnotationView *)mapView:(MKMapView *)theMapView viewForAnnotation:(id <MKAnnotation>)annotation
 {

    if ([annotation isKindOfClass:[MKUserLocation class]]) {

    }
 }

, но я не могу найти, что делать дальше, чтобы получить представление для UserLocation и настроить его.

Большое спасибо ...

Ответы [ 3 ]

6 голосов
/ 04 марта 2013

Я создал SVPulsingAnnotationView , настраиваемую реплику MKUserLocationView.

enter image description here

Вы создаете его, как и любой другой MKAnnotationView:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {
    if([annotation isKindOfClass:[MyAnnotationClass class]]) {
        static NSString *identifier = @"currentLocation";
        SVPulsingAnnotationView *pulsingView = (SVPulsingAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

        if(pulsingView == nil) {
            pulsingView = [[SVPulsingAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
            pulsingView.annotationColor = [UIColor colorWithRed:0.678431 green:0 blue:0 alpha:1];
        }

        pulsingView.canShowCallout = YES;
        return pulsingView;
    }

    return nil;
}
5 голосов
/ 09 марта 2011

Класс для маркера местоположения пользователя по умолчанию (по крайней мере, в SDK 4.2) - MKUserLocationView, но он не является общедоступным, поэтому вы не можете создать экземпляр для изменения, не рискуя быть отклоненным из магазина приложений. Вместо этого вам придется создать свой собственный MKAnnotationView (или подкласс MKAnnotationView).

0 голосов
/ 28 августа 2017

import UIKit import MapKit import CoreLocation

class secondViewController: UIViewController, CLLocationManagerDelegate, MKMapViewDelegate {

@IBOutlet var mapview: MKMapView!

// var locationmanager = CLLocationManager ()

* 1007/ * public func locationManager (_ manager: CLLocationManager, didUpdateLocations location: [CLLocation]) {
    let location = locations[0]

    let span = MKCoordinateSpanMake(0.1, 0.1)

   let my = CLLocationCoordinate2DMake(location.coordinate.latitude, location.coordinate.longitude)

    print(my)
    let region = MKCoordinateRegionMake(my, span)

    mapview.setRegion(region, animated: true)

    self.mapview.showsUserLocation = true
}*/

override func viewDidLoad() {
    super.viewDidLoad()

 /*   mapview.mapType = MKMapType.standard
    locationmanager.delegate = self
    locationmanager.desiredAccuracy = kCLLocationAccuracyBest
    locationmanager.requestWhenInUseAuthorization()
 /*   isAuthorizedtoGetUserLocation()
    if CLLocationManager.locationServicesEnabled() {
        locationmanager.delegate = self
        locationmanager.desiredAccuracy = kCLLocationAccuracyNearestTenMeters
    }*/

    locationmanager.startUpdatingLocation()*/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...