2016-10-28 7 views
0

Предположим, вы хотите сфокусировать свой MapView на текущем местоположении, тогда вы напишите код в didUpdateLocation, который обрабатывает текущие координаты местоположения.Когда вы получили didUpdateLocation?

Но если вы не вызываете requestLocation или startUpdatingLocaion на свой объект CLLocationManager, метод никогда не вызывается. Это верно?

Но кастрированный баран вы звоните requestLocation или startUpdatingLocation, если вы посмотрите на ваш MapView синей точки, которая показывает ваши движения местоположения (например, имитировать движение), но didUpdateLocation не будет вызвана автоматически.

Я пытаюсь понять, почему они сделали метод делегата, когда вы вроде бы назовете это самим.

ответ

1

Вы должны вызвать startUpdatingLocation ONCE, и метод делегирования didUpdateLocation будет вызываться каждый раз при изменении местоположения. Это очень отличается от того, что вы говорите.

+0

Да, возможно, я был недостаточно ясен. Но я хотел сказать, что didUpdateLocations всегда нужно начинать с ее вызова. Но, тем не менее, в вашем представлении карты вы можете видеть, что синяя точка перемещается (например, если вы имитируете движение), но didUpdateLocations не вызывается. Я уточню свой вопрос. – Codey

+1

Ну, это странно, что голубая точка движется, но можно ожидать, что точка обновится, но делегат не вызывается, так как вы не подписались на него. Но поведение реализации делегата, как и ожидалось, мое мнение. Чтобы получать обновления, вы должны вызвать начало. – Daniel

+0

https://developer.apple.com/reference/corelocation/clocationmanagerdelegate – Daniel