【问题标题】:Android Show Map location when Longitude/ Latitude values are in DMS Format当经度/纬度值采用 DMS 格式时,Android 显示地图位置
【发布时间】:2013-06-26 18:18:42
【问题描述】:

在我的 Android 应用程序中,我需要加载 Google 地图并根据提供的纬度和经度值显示位置。 我参考了以下教程,它完全没问题。工作正常。

Link to the tutorial I followed

问题是纬度和经度值存储在 DMS Fromat 的 SQLite 数据库中。如果这些值是十进制度数格式,那么没问题,因为我可以按照教程中的方式进行操作。

我需要通过添加叠加项来显示确切的位置(我已经通过 DMS 格式给出了经度和纬度值)。

[示例值:36°7'59''N,5°25'59''W]

谢谢...

【问题讨论】:

标签: android google-maps map latitude-longitude dms


【解决方案1】:

我很抱歉误解了这个问题。 `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);
        }
    }

 `

我认为这对你有帮助。

【讨论】:

    【解决方案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;
    }
    

    我认为这对你有帮助....

    【讨论】:

    • 当我为这个方法传递这个字符串时,它给出了一个异常。字符串 str = "32°18'23.1''N, 122°36'52.5''W";异常消息是 [For input string: ".1'' N, 122° 36' 52"]
    猜你喜欢
    • 2016-01-10
    • 2011-10-31
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多