2016-01-25 6 views
2

Когда представление загружается при первоначальном запуске (нажмите значок/программа запуска), Google Map View начинается в объединенном королевстве, а затем телепортируется в мое текущее местоположение в очень крутой способ. Нигде в моем коде у меня нет каких-либо британских координатов, которые, я думаю, заставили бы его загрузить там, затем телепортироваться в мое местоположение.swift - Как правильно отображать карту google при запуске приложения

Как я могу решить эту проблему и сделать процесс запуска более элегантным?

let locationManager = CLLocationManager() 
let googleMapView: GMSMapView! 

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.locationManager.requestAlwaysAuthorization() 
    self.locationManager.requestWhenInUseAuthorization() 

    if CLLocationManager.locationServicesEnabled() { 
     locationManager.delegate = self 
     locationManager.desiredAccuracy = kCLLocationAccuracyBest 
     locationManager.startMonitoringSignificantLocationChanges() 

    } 

} 

override func viewDidAppear(animated: Bool) { 
    super.viewDidAppear(animated) 

    self.googleMapView = GMSMapView(frame: self.mapViewContainer.frame) 
    self.view.addSubview(self.googleMapView) 
    self.googleMapView.myLocationEnabled = true 
    self.googleMapView.settings.compassButton = true 

} 

Beginning of Launch

Abruptly shifts to current location

+0

Обратите внимание, что это может вам помочь. http://stackoverflow.com/questions/32043284/ios-google-maps-plotting-multiple-markers-issuesinfo-window-and-marker-repeatin/32043675#32043675 – VRAwesome

+0

Я ценю это, но у меня нет никаких проблем с координатами, а маркеры повторяются или помещаются в неправильную область. Просто для справки, если вы загружаете приложение Google Maps, как только вы откроете приложение, оно автоматически увеличит ваше текущее местоположение. В моем приложении он произвольно начинает зависать над объединенным королевством и неприглядным образом меняет свое текущее местоположение. – lifewithelliott

+0

Я хотел сказать, что следуйте базовой процедуре, если вы забыли какой-либо шаг, а затем можете проверить это. Установите 'self.gMapView.myLocationEnabled = YES;' в 'viewDidAppear()', где вы определили 'GMSMapView'. – VRAwesome

ответ

0

Вы можете попробовать использовать Map Objects. По умолчанию на карте не отображаются данные о местоположении. Вы можете включить синюю точку «Мое местоположение» и направление компаса, установив myLocationEnabled на GMSMapView.

mapView.myLocationEnabled = true

При включении этой функции будет также обеспечивать текущее местоположение пользователя с помощью свойства MyLocation.

if let mylocation = mapView.myLocation { 
    print("User's location: \(mylocation)") 
} else { 
    print("User's location is unknown") 
} 

Это свойство не может быть сразу же доступны - например, если пользователь подсказан прошивкой, чтобы обеспечить доступ к этим данным. В этом случае оно будет нулевым.

+0

Интересно, я пытался каким-то образом манипулировать им, но все же первое место, которое появляется в Великобритании, – lifewithelliott

+0

Это сработало для меня , Благодарю. –

+0

Вы можете попробовать [Geolocation] (https://developers.google.com/maps/articles/geolocation), который ссылается на идентификацию географического местоположения пользователя или вычислительного устройства с помощью множества механизмов сбора данных. Как правило, большинство геолокационных служб используют сетевые адреса маршрутизации или внутренние устройства GPS для определения этого местоположения. Это [руководство] (https://developers.google.com/maps/documentation/geolocation/intro) может вам помочь. – abielita