getLastKnownLocation 无法通过 location.setLatitude/setLongitude 获取新数据?

Posted

技术标签:

【中文标题】getLastKnownLocation 无法通过 location.setLatitude/setLongitude 获取新数据?【英文标题】:getLastKnownLocation can't get new data by location.setLatitude/setLongitude? 【发布时间】:2014-05-23 09:10:02 【问题描述】:

我的完整代码https://gist.github.com/anonymous/6dd0f33270cc4f46149e

在第110~131行我想改变位置,它确实有效,地图视图会改变

private class MapClickedListener implements OnClickListener 

    @Override
    public void onClick (View v) 
        String lng = "121.558561";
        lng = edt_lng.getText().toString().trim();
        String lat = "25.031005";
        lat = edt_lat.getText().toString().trim();
        if(lng.equals("")||lat.equals(""))
            Toast.makeText(getApplicationContext(), "input again!", Toast.LENGTH_LONG).show();
            location = locManager.getLastKnownLocation(bestProvider);
            updateToNewLocation(location);
        else
            Location location = new Location(LocationManager.NETWORK_PROVIDER);
            location.setLongitude(Double.parseDouble(lng));
            location.setLatitude(Double.parseDouble(lat));
            updateToNewLocation(location);
        

    


在第 133~148 行,我想知道 location 和我设置的点之间的距离

private Button.OnClickListener EQ = new Button.OnClickListener()   
    @Override
    public void onClick (View v) 
        eqlocation.setLongitude(120.82);
        eqlocation.setLatitude(23.85);
        location = locManager.getLastKnownLocation(bestProvider);
        float[] result = new float[5];
        Location.distanceBetween(location.getLatitude(), location.getLongitude(), eqlocation.getLatitude(), eqlocation.getLongitude(), result);
        BigDecimal bd = new BigDecimal(result[0]);
        BigDecimal rounded = bd.setScale(2, RoundingMode.HALF_UP);
        double dis = rounded.doubleValue();
        String dist = String.valueOf(dis/1000);
        Toast.makeText(getApplicationContext(), "distance: " + dist + "km", Toast.LENGTH_LONG).show();
    

;

但是我通过110~131行的代码更改位置时结果是错误的。 我应该怎么做才能得到正确的结果?

【问题讨论】:

【参考方案1】:

您是否尝试过 distanceTo() 并检查是否得到更好的结果?,我通常使用 distanceTo() 效果很好。

【讨论】:

以上是关于getLastKnownLocation 无法通过 location.setLatitude/setLongitude 获取新数据?的主要内容,如果未能解决你的问题,请参考以下文章

通过eclipse重新安装apk文件后,getlastknownlocation总是返回null

getLastKnownLocation() 总是返回 null,所有提供者都是 DummyLocationProvider

Android 成功 使用GPS获取当前地理位置(解决getLastKnownLocation 返回 null)

Android APP 在 getLastKnownLocation() 上崩溃

locationManager.getLastKnownLocation() 返回 null

locationManager.getLastKnownLocation() 返回 null