当经度/纬度值为DMS格式时,Android显示地图位置
在我的Android应用程序中,我需要加载Google地图,并根据提供的纬度和经度值显示位置。 我参考了下面的教程,它完全可以。干得好 问题是纬度和经度值存储在DMS Fromat的SQLite数据库中。如果这些值是十进制度数格式,那么就没有问题了,就像我在那个教程中所做的那样 我需要通过添加覆盖项来显示确切的位置(我已经用DMS格式给出了经度和纬度值) [示例值:36°7'59''N,5°25'59''W]当经度/纬度值为DMS格式时,Android显示地图位置,android,google-maps,map,latitude-longitude,dms,Android,Google Maps,Map,Latitude Longitude,Dms,在我的Android应用程序中,我需要加载Google地图,并根据提供的纬度和经度值显示位置。 我参考了下面的教程,它完全可以。干得好 问题是纬度和经度值存储在DMS Fromat的SQLite数据库中。如果这些值是十进制度数格式,那么就没有问题了,就像我在那个教程中所做的那样 我需要通过添加覆盖项来显示确切的位置(我已经用DMS格式给出了经度和纬度值) [示例值:36°7'59''N,5°25'59''W] 谢谢…如果您想将纬度经度值转换为度分钟格式,那么代码就在这里 String locL
谢谢…如果您想将纬度经度值转换为度分钟格式,那么代码就在这里
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;
}
我认为这对你很有帮助…如果你想把经纬度值转换成度数分钟格式,那么代码就在这里
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’”) 公共void doit(字符串lat){
String str=lat;
字符串[]temp=null;
字符串dtemp=null;
字符串[]通过=新字符串[4];
//temp=str.split(“[\”]\\“[\']”);
temp=str.split(“[\”]|[\']”);
系统输出打印项次(“尝试清空”+温度);
dtemp=str.replace(“\”,“”);
System.out.println(“dtempdtemp”+dtemp);
System.out.println(“格式化的DCM------:”+dtemp);
字符串[]temp1=temp[0]。拆分(“”);
System.out.println(“\n协议温度:+temp1[0]);
系统输出打印项次(“\n分钟温度:“+temp1[1]);
通过[0]=temp1[0];
通过[1]=temp1[1];
通过[2]=温度[1];
倾倒(通行证);
}
公共无效转储(字符串[]s){
对于(int i=0;i
我想这对你有帮助。很抱歉我误解了这个问题`doit(“36°7'59’”) 公共void doit(字符串lat){
String str=lat;
字符串[]temp=null;
字符串dtemp=null;
字符串[]通过=新字符串[4];
//temp=str.split(“[\”]\\“[\']”);
temp=str.split(“[\”]|[\']”);
系统输出打印项次(“尝试清空”+温度);
dtemp=str.replace(“\”,“”);
System.out.println(“dtempdtemp”+dtemp);
System.out.println(“格式化的DCM------:”+dtemp);
字符串[]temp1=temp[0]。拆分(“”);
System.out.println(“\n协议温度:+temp1[0]);
系统输出打印项次(“\n分钟温度:“+temp1[1]);
通过[0]=temp1[0];
通过[1]=temp1[1];
通过[2]=温度[1];
倾倒(通行证);
}
公共无效转储(字符串[]s){
对于(int i=0;i
我认为这对u有帮助。当我为这个方法传递这个字符串时,它给出了一个异常。字符串str=“32°18'23.1'N,122°36'52.5'W”;异常消息是[对于输入字符串:“.1''N,122°36'52”]当我将此字符串传递给此方法时,它会给出异常。字符串str=“32°18'23.1'N,122°36'52.5'W”;异常消息是[对于输入字符串:“.1''N,122°36'52”]检查此链接以获取答案检查此链接以获取答案