我有一個簡單的應用程序,應該返回我當前的GPS位置,下面的代碼,基本上基於Embarcadero提供的教程。三星Galaxy 2上的Delphi XE5 TLocationServices不使用GPS
執行時,我的三星GPS圖標不顯示,返回的位置通常是100m偏離真實位置。
我已經嘗試了各種有價值的'準確性',並試圖在將對象設置爲活動之前和之後設置「準確性」 - 行爲沒有變化。
我已經獲得的其他應用程序(包括Galaxy自帶的「地圖」)在使用時顯示GPS圖標並返回正確的位置。
隨着GPS圖標不顯示,我假設應用程序不使用GPS - 我如何指示它這樣做? (FINE位置獲得權限)
procedure THeaderFooterForm.FormCreate(Sender: TObject);
begin
LocationSensor1.Active := true;
LocationSensor1.Optimize := true;
LocationSensor1.Accuracy := 100000;
LocationSensor1.Distance := 0;
end;
procedure THeaderFooterForm.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
var
URLString: String;
URLLoadFile: TStringList;
begin
lblLat.Text := NewLocation.Latitude.ToString;
lblLong.Text := NewLocation.Longitude.ToString;
URLLoadFile := TStringList.Create;
URLLoadFile.Add('<iframe');
URLLoadFile.Add(' width="' + WebBrowser1.Width.ToString + '"');
URLLoadFile.Add(' height="' + WebBrowser1.Height.ToString + '"');
URLLoadFile.Add(' frameborder="0" style="border:0"');
URLLoadFile.Add('src=' + Format(
'https://maps.google.com/maps?q=%s,%s&output=embed',
[Format('%2.6f', [NewLocation.Latitude]), Format('%2.6f', [NewLocation.Longitude])]) + '>');
URLLoadFile.Add('</iframe>');
URLLoadFile.SaveToFile('sdcard/Android/data/com.embarcadero.GridLock/files/URLLoadFile.html');
// Show Map using Google Maps
URLString := 'file://sdcard/Android/data/com.embarcadero.GridLock/files/URLLoadFile.html';
WebBrowser1.Navigate(URLString);
URLLoadFile.Free;
end;
在此先感謝, 克里斯