如何从Google Maps App获取用户当前的GPS位置?

时间:2013-02-04 19:14:10

标签: android google-maps android-maps google-maps-mobile


尝试了很长时间......面对problem以获取用户当前的GPS定位。

所以,我想我们是否可以通过预先安装的谷歌地图应用程序Current Location修复程序以编程方式获取位置修复?

如果我能够获取位置在后台协调..这可能吗?
因此,是否可以通过使用意图或广播接收器以某种方式获取当前位置坐标?(假设地图应用程序正在广播它。 。?)

更新#2:最后......我让它发挥作用..

更新:我之前的代码是here(PasteBin Link)

欢迎任何建议.. 感谢..

2 个答案:

答案 0 :(得分:2)

Ok codebreaker,这是我实现位置获取器的方式:

// the listener to listen to the locations
private LocationListener listener = null;
// a location manager
private LocationManager lm  = null;
// locations instances to GPS and NETWORk
private Location myLocationGPS, myLocationNetwork;

// instantiates fields
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
myLocationNetwork = lm.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
myLocationGPS = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER);
listener = new myLocationListener();

// the listener that gonna notify the activity about location changes
public class myLocationListener implements LocationListener {
    @Override
    public void onLocationChanged(Location location) {
        // "location" is the RECEIVED locations and its here that you should proccess it

        // check if the incoming position has been received from GPS or network
        if (lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
            lm.removeUpdates(this);
        } else {
            lm.removeUpdates(listener);
        }
    }
    @Override
    public void onProviderDisabled(String provider) {
        lm.removeUpdates(this);
        lm.removeUpdates(listener);         
    }
    @Override
    public void onProviderEnabled(String provider) {
    }
    @Override
    public void onStatusChanged(String provider, int status, Bundle extras) {
    }
}

正如你所看到的,没有太多的诡计。在您实例化侦听器时,您应该会在Android设备的顶部看到GPS图标。此外,无论何时您的位置发生变化(即当您使用设备时),都会调用OnLocationChanged方法。

另外,有趣的是,如果你想要获得位置,有几种方法可以做到这一点,所有这些都有不同的回报速度和不同的精确度。请检查GoogleGLM(对http://www.google.com/glm/mmap的请求,该请求返回带有您位置的json编码的strign)服务,三角测量和网络位置。在上面的片段中,我展示了如何通过GPS和网络获取位置。希望它有所帮助...... :)

答案 1 :(得分:0)

您可以使用被动位置提供程序,但它并不意味着它将从GoogleMaps中获取位置。此外,GoogleMaps应该正在运行以接收更新。 要从GoogleMaps接收位置更新,您还必须拥有ACCES_FINE_LOCATION的权限。此外,您无法启动GoogleMaps并强制其在没有用户互动的情况下更新位置。如果您需要精确的用户位置,除了使用GPS_PROVIDER之外别无他法。

http://developer.android.com/reference/android/location/LocationManager.html#PASSIVE_PROVIDER

您也可以阅读 http://developer.android.com/guide/topics/location/strategies.html http://developerlife.com/tutorials/?p=1375