다소 넓 습니다만, 여기에 나와 있습니다. 삼각 측량 알고리즘에서 매우 이상한 문제가 발생했습니다. 경우에 따라 올바른 위도/경도를 반환하고 시간이 지나면 잘못된 위도/경도를 반환합니다. 더 이상한 일은이 오류가 언제 일어날 지 예측할 수없고 재현 할 수도 없다는 것입니다. 내 코드에서 행을 변경하지 않더라도 올바른 값을받은 다음 잘못된 순서로 수정하는 등의 작업을 수행합니다.Android에서 삼각 측량으로 잘못된 위치가 수신되었습니다.
저는 Google GLM 서비스를 사용하여 장치 LAC (위치 지역 번호)와 타워 ID를 내 위치를 삼각형으로 보냅니다. 이 방법은 1 분 지연을 통해 호출 안드로이드 서비스를 확장하는 클래스에 사용됩니다 어쩌면 도움이이 될 수 있다는
private double[] getPositionByTriangle(int lac, int cid) {
int shortcid = cid & 0xffff;
double location[] = new double[2];
try {
String surl = "http://www.google.com/glm/mmap";
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(surl);
httppost.setEntity(new CellIDRequestEntity(shortcid, lac));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
DataInputStream dis = new DataInputStream(entity.getContent());
// Read some prior data
dis.readShort();
dis.readByte();
// Read the error-code
int errorCode = dis.readInt();
if (errorCode == 0) {
location[0] = (double) dis.readInt()/1000000D;
location[1] = (double) dis.readInt()/1000000D;
}
} catch (Exception e) {}
return location;
}
추가 정보 : 내 알고리즘의 핵심 방법은 다음에 PendingIntent. 그것을 호출하는 스레드는 SharedPreferences의 위도/경도 값을 저장 한 다음 모든 뷰에서 사용합니다.
잘못된 알고리즘으로 메소드를 구현했는지 또는 내가 놓친 프로세스에서 트릭이 발생하는지 궁금합니다. 위도 = 17 및 경도 = 81의 값은 현재 내 정확한 aproximated 위도/경도 값은 = -23 및 경도 = -46위도,하지만 난 (때로는) 수신하고 있습니다. 누군가 나에게 무슨 일이 일어나고 있는지에 대한 힌트를 줄 수 있습니까?