2013-07-03 44 views
7

Chúng tôi đang đánh giá WP8 cho một trong các ứng dụng của chúng tôi. Nó sử dụng GPS để theo dõi nhà thầu làm việc trong khu vực. Chúng ta đang thấy Nokia Lumia là nền tảng phần cứng rất tốt nhưng lại phải đối mặt với vấn đề với chồng phần mềm.Hành vi buggy GPS trên nền tảng Windows Phone 8

a.Chúng tôi đã thử tính năng định vị địa lý của nền tảng này cùng với MovementThreshold được đặt là 100 cùng với độ chính xác được đặt là CAO. b. Tuy nhiên, chúng tôi đang gặp lỗi trong dữ liệu (ngay cả khi chúng tôi di chuyển trong khoảng một mét, chúng tôi bị gián đoạn và vị trí quá xa so với thực tế). Sau khi tìm kiếm trên web và tài liệu, chúng tôi thấy rằng 'Trên WP8, các vị trí dựa trên GPS Satelite sẽ chỉ được phát nếu thông tin vị trí không thể tìm nạp được từ mạng WiFi/Mạng di động.

Điều này đang giết chết việc theo dõi đối tượng được tinh chỉnh. Có cách nào (như trong android chúng ta có thể chọn nhà cung cấp) chúng ta có thể ép buộc Sat. dựa trên GPS?

Tôi xin lỗi nếu nó trùng lặp.

Mọi trợ giúp sẽ được đánh giá cao.

PS: Chúng tôi đã áp dụng công thức để tính toán khác biệt giữa các điểm và lọc với ngưỡng nhưng cách tiếp cận không tốt. Kính trọng ...

Trả lời

6

2 Geocoordinate lớp 1 Geo * C * oordinate mà đi kèm dưới System.Device.Location namespace 2 Geo * c * oordinate mà đến theo số Windows.Devices.Geolocation không gian tên

nếu bạn sử dụng Geolocator trong mã theo dõi của bạn thì phối hợp bạn nhận được là Geocoordinate vì cả hai đều nằm trong cùng một không gian tên như đã đề cập trong 2, Windows.Devices.Geolocation và nếu bạn sử dụng geocoordinatewatcher nó cung cấp cho bạn GeoCoordinate như cả hai đi kèm trong 1 System.Device .Vị trí.

Nếu bạn đang sử dụng Geocoordinatewatcher ở trên mã hoạt động tốt nhưng nếu bạn đang sử dụng Geolocator thì tài sản HorizontalAccuracy sẽ không có sẵn cho bạn, thay vào đó bạn phải sử dụng tính chính xác.

private const double ACCURACY_THRESHOLD = 20; 

private void LocationChanged(Geocoordinate coordinate) 
{ 
    if (coordinate.Accuracy < ACCURACY_THRESHOLD) 
    { 
     // use point 
    } 
    else 
    { 
     // ignore and wait for better accuracy 
    } 
} 

hoặc những gì bạn có thể làm là bạn có thể chuyển đổi Geocoordinate thành GeoCoordinate và sử dụng mã được đề cập trong câu trả lời ở trên.

5

Bạn không thể bắt buộc theo dõi dựa trên vệ tinh, nhưng bằng cách chọn độ chính xác cao, chúng sẽ được bật. Sau đó, bạn có thể đánh giá độ chính xác của vị trí được nhận và chọn không sử dụng vị trí không chính xác. Độ chính xác là một phần của lớp GeoCoordinate, tính bằng mét.

private const double ACCURACY_THRESHOLD = 20; 

private void LocationChanged(GeoCoordinate coordinate) 
{ 
    if (coordinate.HorizontalAccuracy < ACCURACY_THRESHOLD) 
    { 
     // use point 
    } 
    else 
    { 
     // ignore and wait for better accuracy 
    } 
} 

Xem http://msdn.microsoft.com/en-us/library/system.device.location.geocoordinate.horizontalaccuracy.aspx

Các vấn đề liên quan