2012-02-24 55 views
2

只是好奇,如果這是一個錯誤,或者如果我做錯了。我正嘗試使用WinRT中的Geolocator。我在Javascript測試Metro應用,一切工作與此代碼:WinRT GetGeopositionAsync不是在C++中使用JavaScript嗎?

var locator = Windows.Devices.Geolocation.Geolocator(); 
var promise = locator.getGeopositionAsync().then(
    function (pos) { 
     Loc.innerText = "Lat: " + pos.coordinate.latitude + ", Lng: " + pos.coordinate.longitude; 
    }); 

我試圖做同樣的事情用C與此代碼++應用程序,但它並沒有進入過我的拉姆達:

auto locator = ref new Geolocator(); 
auto operation = locator->GetGeopositionAsync(); 
operation->Completed = ref new AsyncOperationCompletedHandler<Geoposition^>(
    [=](IAsyncOperation<Geoposition^>^ operation) 
    { 
     auto result = operation->GetResults(); 
     std::wstringstream ss; 
     ss << L"Lat: " << result->Coordinate->Latitude << L", Lng: " << result->Coordinate->Longitude; 
     this->Loc->Text = ref new String(ss.str().c_str()); 
    }); 

我已經在兩個應用程序中啓用了位置功能。有什麼建議麼?

+0

好奇,您的操作對象是否包含可用的「開始」方法(通過智能顯示)? – 2012-02-27 19:58:58

+0

您是否聲明瞭C++應用程序的位置功能? – sarvesh 2012-02-28 23:02:30

+0

@iaimtomisvehave是的:「我已經在兩個應用程序中啓用了位置功能。」 – Skrymsli 2012-02-29 00:19:36

回答

0

你可以嘗試使用PPL。根據我的經驗,使用C++開發比使用這些處理程序更好。

#include <ppl> 

Concurrency::task<Geoposition^> getPositionTask(locator->GetGeopositionAsync()); 
getPositionTask.then([=](IAsyncOperation<Geoposition^>^ operation) { 
... 

當然,如果你正在開發一個組件,你不能從你的方法返回併發::任務對象,但只要你是你的代碼中,他們很可能是優選的。

相關問題