2009-07-22 3 views
2

Я работаю с контроллером MKMapView (SDK v3.0) в симуляторе в течение нескольких дней. Мне удалось сопоставить произвольное местоположение, увеличить его, сбросить булавку и добавить аннотацию. Тем не менее, я все еще немного нечеткий по всем возможностям самого управления MKMapView (вне симулятора).Вопросы MKMapView

Если проверено свойство «Показывает местоположение пользователя MKMapView», симулятор iPhone отбрасывает штырь в штаб-квартире Apple. Очевидно, что симулятор фактически не геокодирует фактическое местоположение телефона.

Имеет ли эта функциональность, однако, что MKMapView имеет экземпляр CLLocationManager 'in' it? С другой стороны, будет ли MKMapView, когда выбрана опция «Показывать местоположение пользователя», автоматически найти местоположение телефона и сбросить булавку? Если да, делает ли это это без запроса разрешения на получение местоположения? Могу ли я установить уровень масштабирования по умолчанию в IB?

Спасибо за ваше время,

Craig Buchanan

ответ

0

Я не думаю, что так. Запуск по телефону в Великобритании, отображение по умолчанию по-прежнему сосредоточено на бесконечной петле.

Я стараюсь избегать IB для такого рода вещей и работать с кодом.

2

Это местонахождение текущего местоположения пользователя, и оно запрашивает разрешение (хотя, как и во всех других приложениях, я уверен, что есть значение по умолчанию «Да», которое можно установить). Я почти на 100% уверен, что вы не можете установить масштаб в IB. Я уверен, что это программно просто, но я (как и вы) ожидаю, когда Apple даст нам 411 на MKMaps! Но мы всегда можем просто набирать и печатать, пока что-то не работает ;-)

Удачи!

3

Вот пример масштабирования программно (нет никакого способа, в IB, чтобы сделать это):

MKCoordinateRegion region; 
    MKCoordinateSpan span; 
    span.latitudeDelta=0.02/10; // zoom level 
    span.longitudeDelta=0.02/10; 

    CLLocationCoordinate2D location; 
    location.latitude = latitude; // set these var's first! 
    location.longitude = longitude; 

    region.span=span; 
    region.center=location; 

    [mapView setRegion:region animated:TRUE]; 
    [mapView regionThatFits:region]; 

Я не уверен, если это то, что вы после этого, но вы пробовали mapView.userLocation для CLLocation хранится?

Также помните, что в iPhone Simulator штырь всегда будет падать на Apple HQ, если только (из Xcode4) вы не измените местоположение имитируемого пользователя - это значок стрелки местоположения, расположенный чуть выше консоли в Xcode. При использовании устройства координата должна перейти в ваше местоположение GPS, в зависимости от охвата.

0

В симуляторе CLLocationManager жестко закодирован, чтобы вернуть исправление в штаб-квартиру Apple. На реальном устройстве CLLocationManager вернет исправления в порядке точности, Skyhook Wireless, затем триангуляцию Cell Mast и, наконец, подсистему GPS. Обратите внимание, что на всех устройствах не все доступны. IPod Touch все еще может возвращать место, но только от Skyhook Wireless (например, зарегистрированного местоположения беспроводной точки доступа)

Симулятор возвращает только одно исправление местоположения, если вы хотите, чтобы местоположение было правильным и приближалось к реальному устройству вам нужно будет зарегистрировать CLLocationManagerDelegate, когда вы устанавливаете флаг местоположения пользователя в MKMapView, и имеете CLLocationManager startUpdatingLocation.

Используйте полученные обновления с кодом, как указано выше, чтобы установить центр и интервал MKMapView, чтобы карта была в центре и приближалась к местоположению. Вероятно, лучше всего установить интервал на точность определения местоположения, которое вы предоставили, что должно позволить вам увидеть все синее кольцо исправления GPS, обеспечивая полезную обратную связь с пользователем.

0

Вы не можете установить масштаб масштабирования по умолчанию в IB.

Что касается местоположения синей точки над штаб-квартирой Apple, она делает это только в симуляторе. На устройстве он дает вам свое местоположение!