2013-06-03 49 views
1

在我的應用程序中,我想獲取緯度和經度值。我有下面的代碼。它第一次崩潰,函數被調用。應用程序要求使用當前的位置和應用程序崩潰拋出空引用異常我在哪裏指定緯度值的字符串MonoTouch:獲取經度和緯度值崩潰

string getLocation() 
{ 
    string latlong = "|"; 

    CLLocationManager locationManager = new CLLocationManager(); 

    locationManager.StartUpdatingLocation(); 

    //var locationVar = locationManager.Location.Coordinate; 

    string lat = locationManager.Location.Coordinate.Latitude.ToString(); 
    string lon = locationManager.Location.Coordinate.Longitude.ToString(); 
    latlong = lat + "|" + lon; 


    return latlong; 
} 

回答

4

您不能從的LocationManager檢索位置,直到它已檢索的位置的用戶權限。您需要分配一個事件處理程序,該程序將在找到該位置時調用。

從Xamarin的CoreLocation sample包括如何做到這一點

// handle the updated location method and update the UI 
if (UIDevice.CurrentDevice.CheckSystemVersion (6, 0)) { 
    iPhoneLocationManager.LocationsUpdated += (object sender, CLLocationsUpdatedEventArgs e) => { 
    UpdateLocation (mainScreen, e.Locations [e.Locations.Length - 1]); 
    }; 
} else { 
    // this won't be called on iOS 6 (deprecated) 
    iPhoneLocationManager.UpdatedLocation += (object sender, CLLocationUpdatedEventArgs e) => { 
    UpdateLocation (mainScreen, e.NewLocation); 
    }; 
} 
+0

只是一個小問題的更新位置函數被調用多次一個完整的例子。它是如何工作的。在我的應用程序中,我不想多次調用它。 – User382

+0

如果您的手機正在移動,GPS會隨着位置的變化而更新。當您想停止獲取更新時調用StopUpdatingLocation()。 – Jason

+0

我第一次調用UpdateLocation時,它會被多次調用。在我的代碼中,當我得到lat,long值時,我正在停止更新(StopUpdatingLocation),但它仍然最終給我多次經緯度值。 – User382