Bagikan melalui


ILocationReport::Metode GetValue (locationapi.h)

[API Lokasi Win32 tersedia untuk digunakan dalam sistem operasi yang ditentukan di bagian Persyaratan. Ini dapat diubah atau tidak tersedia dalam versi berikutnya. Sebagai gantinya, gunakan WINDOWS.Devices.Geolocation API. ]

Mengambil nilai properti dari laporan lokasi.

Sintaks

HRESULT GetValue(
  [in]  REFPROPERTYKEY pKey,
  [out] PROPVARIANT    *pValue
);

Parameter

[in] pKey

REFPROPERTYKEY yang menentukan nama properti yang akan diambil.

[out] pValue

Alamat PROPVARIANT yang menerima nilai properti.

Mengembalikan nilai

Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Properti mungkin ditentukan platform atau produsen yang ditentukan.

Nilai PROPERTYKEY yang ditentukan platform untuk sensor lokasi didefinisikan di bagian jenis data sensor lokasi sensors.h.

Berikut ini adalah tabel beberapa properti yang ditentukan platform yang umumnya terkait dengan laporan lokasi. Kunci properti ini memiliki bidang fmtid yang sama dengan SENSOR_DATA_TYPE_LOCATION_GUID. Properti tambahan dapat ditemukan di sensors.h. Jika Anda menerapkan laporan lokasi Anda sendiri untuk diteruskan ke SetReport, tabel ini menunjukkan nilai mana yang harus disediakan dalam implementasi GetValue objek laporan Anda.

Nama dan jenis kunci properti Deskripsi
VT_R8 SENSOR_DATA_TYPE_LATITUDE Derajat garis lintang di mana Utara positif.
Catatan Objek laporan garis lintang/bujur yang diteruskan ke SetReport harus memberikan nilai ini dalam implementasi GetValue.
 
VT_R8 SENSOR_DATA_TYPE_LONGITUDE Garis bujur derajat di mana Timur positif.
Catatan Objek laporan garis lintang/bujur yang diteruskan ke SetReport harus memberikan nilai ini dalam implementasi GetValue.
 
SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS VT_R8 Ketinggian sehubungan dengan permukaan laut, dalam meter.
VT_R8 SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_METERS Ketinggian sehubungan dengan elipsoid referensi, dalam meter.
VT_R8 SENSOR_DATA_TYPE_SPEED_KNOTS Kecepatan diukur dalam simpul.
VT_R8 SENSOR_DATA_TYPE_TRUE_HEADING_DEGREES Menuju ke utara sejati dalam derajat.
VT_R8 SENSOR_DATA_TYPE_MAGNETIC_HEADING_DEGREES Menuju relatif terhadap magnet utara dalam derajat.
VT_R8 SENSOR_DATA_TYPE_MAGNETIC_VARIATION Variasi magnetik. Timur positif.
VT_R8 SENSOR_DATA_TYPE_ERROR_RADIUS_METERS Radius kesalahan yang menunjukkan akurasi lintang dan bujur dalam meter.
Catatan Objek laporan garis lintang/bujur yang diteruskan ke SetReport harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_ADDRESS1 Baris pertama alamat dalam laporan alamat satwa.
Catatan Jika objek laporan alamat syariah yang diteruskan ke SetReport berisi data ini, objek tersebut harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_ADDRESS2 Baris kedua alamat dalam laporan alamat satwa.
Catatan Jika objek laporan alamat syariah yang diteruskan ke SetReport berisi data ini, objek tersebut harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_CITY Bidang kota dalam laporan alamat syariah.
Catatan Jika objek laporan alamat syariah yang diteruskan ke SetReport berisi data ini, objek tersebut harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_STATE_PROVINCE Bidang negara bagian/provinsi dalam laporan alamat satwa.
Catatan Jika objek laporan alamat syariah yang diteruskan ke SetReport berisi data ini, objek tersebut harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_POSTALCODE Bidang kode pos dalam laporan alamat syariah.
Catatan Jika objek laporan alamat syariah yang diteruskan ke SetReport berisi data ini, objek tersebut harus memberikan nilai ini dalam implementasi GetValue.
 
VT_LPWSTR SENSOR_DATA_TYPE_COUNTRY_REGION Kode negara/wilayah dalam laporan alamat satwa. Nilai harus berupa kode negara ISO 3166 dua huruf atau tiga huruf.
Catatan Objek laporan alamat sian yang diteruskan ke SetReport harus memberikan nilai ini dalam implementasi GetValue.
 
VT_R8 SENSOR_DATA_TYPE_ALTITUDE_ELLIPSOID_ERROR_METERS Kesalahan ketinggian sehubungan dengan elipsoid referensi, dalam meter.
VT_R8 SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_ERROR_METERS Kesalahan ketinggian sehubungan dengan permukaan laut, dalam meter.
 

Berikut ini adalah tabel properti lain yang ditentukan platform yang mungkin terjadi di laporan lokasi tetapi tidak spesifik untuk lokasi. Bidang fmtid dari kunci properti ini SENSOR_PROPERTY_COMMON_GUID.

Nama dan jenis kunci properti Deskripsi
VT_UNKNOWN SENSOR_PROPERTY_ACCURACY Objek IPortableDeviceValues yang berisi nama jenis data sensor dan akurasi terkaitnya. Nilai akurasi mewakili kemungkinan variasi dari nilai benar.

Nilai akurasi dinyatakan dengan menggunakan unit yang sama dengan bidang data, kecuali jika di dokumentasikan.

VT_UNKNOWN SENSOR_PROPERTY_CHANGE_SENSITIVITY Objek IPortableDeviceValues yang berisi nama jenis data sensor dan nilai sensitivitas perubahan terkait. Nilai sensitivitas perubahan mewakili jumlah yang harus diubah bidang data sebelum peristiwa SENSOR_EVENT_DATA_UPDATED dinaikkan.

Nilai sensitivitas dinyatakan dengan menggunakan unit yang sama dengan bidang data, kecuali jika di dokumentasikan.

Misalnya, nilai sensitivitas perubahan 2 untuk SENSOR_DATA_TYPE_TEMPERATURE_CELSIUS akan mewakili sensitivitas plus atau minus 2 derajat Celcius.

VT_UI4 SENSOR_PROPERTY_CURRENT_CONNECTION_TYPE Nilai SensorConnectionType yang berisi jenis koneksi saat ini.
VT_UI4 SENSOR_PROPERTY_CURRENT_REPORT_INTERVAL Waktu yang berlalu saat ini untuk pembuatan laporan data sensor, dalam milidetik.

Mengatur nilai nol memberi sinyal kepada driver untuk menggunakan interval laporan defaultnya. Setelah menerima nilai nol untuk properti ini, driver harus mengembalikan interval laporan defaultnya, bukan nol, saat dikueri.

Aplikasi dapat mengatur nilai ini untuk meminta interval laporan tertentu, tetapi beberapa aplikasi mungkin menggunakan driver yang sama. Oleh karena itu, driver menentukan interval laporan benar yang didasarkan pada logika internal. Misalnya, driver mungkin selalu menggunakan interval laporan terpendek yang diminta oleh pemanggil.

VT_LPWSTR SENSOR_PROPERTY_DESCRIPTION String deskripsi sensor.
VT_LPWSTR SENSOR_PROPERTY_DEVICE_PATH Secara unik mengidentifikasi instans perangkat tempat sensor dikaitkan. Anda dapat menggunakan properti ini untuk menentukan apakah perangkat berisi beberapa sensor.

Driver perangkat tidak harus mendukung properti ini karena platform menyediakan nilai ini untuk aplikasi tanpa mengkueri driver.

SENSOR_PROPERTY_FRIENDLY_NAME VT_LPWSTR Nama yang mudah diingat untuk perangkat.
VT_UI4 SENSOR_PROPERTY_LOCATION_DESIRED_ACCURACY Nilai enumerasi yang menunjukkan jenis penanganan akurasi yang diminta oleh aplikasi klien. LOCATION_DESIRED_ACCURACY_DEFAULT (0) menunjukkan bahwa sensor harus menggunakan akurasi yang dapat mengoptimalkan penggunaan daya dan pertimbangan biaya lainnya.

LOCATION_DESIRED_ACCURACY_HIGH (1) menunjukkan bahwa sensor harus memberikan laporan yang paling akurat. Ini termasuk menggunakan layanan yang mungkin mengenakan biaya uang, atau mengonsumsi tingkat daya baterai atau bandwidth koneksi yang lebih tinggi.

VT_LPWSTR SENSOR_PROPERTY_MANUFACTURER Nama produsen.
VT_UI4 SENSOR_PROPERTY_MIN_REPORT_INTERVAL Pengaturan waktu minimum yang berlalu yang didukung perangkat keras untuk pembuatan laporan data sensor, dalam milidetik.
VT_LPWSTR SENSOR_PROPERTY_MODEL Nama model sensor.
VT_CLSID SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID GUID yang mengidentifikasi sensor. Nilai ini harus unik untuk setiap sensor pada perangkat, atau di seluruh perangkat dengan model yang sama seperti yang dijumlahkan di komputer.
VT_UKNOWN SENSOR_PROPERTY_RANGE_MAXIMUM Objek IPortableDeviceValues yang berisi nama bidang data sensor dan nilai maksimum terkaitnya.
VT_UKNOWN SENSOR_PROPERTY_RANGE_MINIMUM Objek IPortableDeviceValues yang berisi nama bidang data sensor dan nilai minimum terkaitnya.
VT_UKNOWN SENSOR_PROPERTY_RESOLUTION Objek IPortableDeviceValues yang berisi nama bidang data sensor dan resolusi terkaitnya. Nilai resolusi mewakili sensitivitas untuk diubah di bidang data.

Nilai resolusi dinyatakan dengan menggunakan unit yang sama dengan bidang data, kecuali jika di dokumentasikan.

SENSOR_PROPERTY_SERIAL_NUMBER VT_LPWSTR Nomor seri sensor.
VT_UI4 SENSOR_PROPERTY_STATE Nilai SensorState yang berisi status sensor saat ini.
VT_CLSID SENSOR_PROPERTY_TYPE GUID yang mengidentifikasi jenis sensor. Jenis sensor yang ditentukan platform ditentukan dalam Sensors.h.
 

Contoh

Contoh berikut menunjukkan cara memanggil GetValue untuk mendapatkan nilai properti. Anda harus menyertakan sensors.h untuk menggunakan konstanta dalam contoh.


PROPVARIANT pv;				
HRESULT hr = spLatLongReport->GetValue(SENSOR_DATA_TYPE_LATITUDE_DEGREES, &pv);

Contoh berikut menunjukkan cara menerapkan GetValue di objek laporan Anda sendiri. Implementasi ini memungkinkan pemanggil untuk mendapatkan nilai untuk beberapa bidang laporan lokasi. Kode ini mengharuskan Anda untuk menyertakan sensors.h dan provarutil.h.

STDMETHODIMP CLocationReport::GetValue(REFPROPERTYKEY pKey, PROPVARIANT *pValue)
{
    HRESULT hr = S_OK;

    if (pKey.fmtid == SENSOR_DATA_TYPE_LOCATION_GUID) 
    {
        // properties for civic address reports
        if (pKey.pid == SENSOR_DATA_TYPE_ADDRESS1.pid)
        {
            hr = InitPropVariantFromString(m_address1, pValue);
        } 
        else if (pKey.pid == SENSOR_DATA_TYPE_ADDRESS2.pid)
        {    
            hr = InitPropVariantFromString(m_address2, pValue);
        }
        else if (pKey.pid == SENSOR_DATA_TYPE_CITY.pid)
        {
            hr = InitPropVariantFromString(m_city, pValue);
        }
        else if (pKey.pid == SENSOR_DATA_TYPE_STATE_PROVINCE.pid)
        {
            hr = InitPropVariantFromString(m_stateprovince, pValue);
        } 
        else if (pKey.pid == SENSOR_DATA_TYPE_POSTALCODE.pid)
        {
            hr = InitPropVariantFromString(m_postalcode, pValue);
        }
        else if (pKey.pid == SENSOR_DATA_TYPE_COUNTRY_REGION.pid)    
        {
            hr = InitPropVariantFromString(m_countryregion, pValue);
        }
        // properties for latitude/longitude reports
        else if (pKey.pid == SENSOR_DATA_TYPE_LATITUDE_DEGREES.pid)
        {
            hr = InitPropVariantFromDouble(m_latitude, pValue);
        } 
        else if (pKey.pid == SENSOR_DATA_TYPE_LONGITUDE_DEGREES.pid)
        {
            hr = InitPropVariantFromDouble(m_longitude, pValue);
        }
        else if (pKey.pid == SENSOR_DATA_TYPE_ERROR_RADIUS_METERS.pid)    
        {
            hr = InitPropVariantFromDouble(m_errorradius, pValue);
        }
        else 
        {
            hr = HRESULT_FROM_WIN32(ERROR_NO_DATA);
            PropVariantInit(pValue);
        }
    }
    return hr;
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 7 [hanya aplikasi desktop],Windows 7
Server minimum yang didukung Tidak ada yang didukung
Target Platform Windows
Header locationapi.h
DLL LocationAPI.dll

Lihat juga

ILocationReport