Android Показать местоположение карты, когда значения долготы / широты находятся в формате DMS
В моем приложении для Android мне нужно загрузить карту Google и показать местоположение в соответствии с указанными значениями широты и долготы. Я сослался на следующий урок, и он полностью в порядке. Отлично работает
Проблема в том, что значения широты и долготы хранятся в базе данных SQLite в DMS Fromat. Если бы эти значения были в формате Decimal Degrees, тогда нет проблем, как я могу сделать, как это было в этом учебнике.
Мне нужно показать точное место, добавив элемент наложения (я дал значения долготы и широты в формате DMS).
[Пример значений: 36°7'59''N, 5°25'59''W]
Спасибо...
2 ответа
Если вы хотите преобразовать значение широты и долготы в формат градусов-минут, тогда код здесь...
String locLat, locLng;
locLat = Double.toString(location.getLatitude());
locLng = Double.toString(location.getLongitude());
String locLatTodeg = DoubleToDeg(locLat);
String locLngTodeg = DoubleToDeg(locLng);
private String DoubleToDeg(String locLng) {
// TODO Auto-generated method stub
String retStringLoc = null;
try {
String firString = locLng.replace(".", ";");
String[] firLocArr = firString.split(";");
Float deg = new Float("." + firLocArr[1]);
Float Cnvtddeg = deg * 60;
String secString = new Float(Cnvtddeg).toString().replace(".", ";");
String[] secLocArr = secString.split(";");
Float min = new Float("." + secLocArr[1]);
Float Cnvtdmin = min * 60;
String tirString = new Float(Cnvtdmin).toString().replace(".", ";");
String[] tirLocArr = tirString.split(";");
retStringLoc = firLocArr[0] + "°" + secLocArr[0] + "'"
+ tirLocArr[0] + "''";
} catch (Exception e) {
// Log.i("Exception", e.toString());
}
return retStringLoc;
}
Я думаю, что это полезно для вас....
Я прошу прощения за неправильно понятый вопрос. `DoIt ("36 ° 7'59''N");
public void doit (String lat) {
String str = lat;
String [] temp = null;
String dtemp = null;
String [] pass = new String[4];
//temp = str.split("[\"]|\"[\']");
temp = str.split("[\"]|[\']" );
System.out.println("temptemptemptemp "+temp);
dtemp = str.replace("\"", "°");
System.out.println("dtempdtempdtemp "+dtemp);
System.out.println("Formated DCM---------- : "+dtemp);
String [] temp1 = temp[0].split("°");
System.out.println("\ndegree temp: "+temp1[0]);
System.out.println("\nminutes temp: "+temp1[1]);
pass[0] = temp1[0];
pass[1] = temp1[1];
pass[2] = temp[1];
dump(pass);
}
public void dump(String []s) {
for (int i = 0 ; i < s.length ; i++) {
System.out.println("\ndegree : "+s[0]);
System.out.println("\nminutes : "+s[1]);
System.out.println("\nsecond : "+s[2]);
String deg = s[0] ;
int ndeg = Integer.parseInt(deg);
String min = s[1] ;
double nmin = Double.parseDouble(min);
String sec = s[2] ;
double nsec = Double.parseDouble(sec);
double decimaldms = (ndeg+(nmin/60)+(nsec/3600));
System.out.println("\nfinaldecimal : "+decimaldms);
}
}
`
Я думаю, что это помощь для вас.