Google-map-API V2中的当前位置

时间:2014-03-18 15:38:23

标签: android eclipse map location google-maps-api-2

我在Android应用程序中使用Google API V2。 我想获取当前位置并在其上添加标记。 我正在使用我的朋友设备。当我运行代码时,它会显示我朋友的房子位置。我真的很震惊。

任何人都可以帮我找到我现在的位置..

3 个答案:

答案 0 :(得分:1)

多数民众赞成是因为您首先加载了LastKnownLocation,因为它是您的朋友手机,它会向您的朋友显示您最后知道的位置(他的房子)。

代码看起来很好,我想你必须等到它找到真正的位置。

(确保您拥有所有权限,并且gps已开启)

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<!-- The following two permissions are not required to use
     Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

答案 1 :(得分:0)

当您致电locationManager.getLastKnownLocation(provider)时,您正在检索GPS的最后位置,就像您的朋友在家时一样。

如果您希望获得所在位置,则应仅拨打requestSingleUpdate一次更新,或requestLocationUpdates进行持续更新。

使用按钮侦听器进行一次更新的示例:

btnupdate.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {

            locationManager.requestSingleUpdate(criteria, new LocationListener() {


                @Override
                public void onLocationChanged(Location location) {

                }
                @Override
                public void onProviderEnabled(String provider) {

                }
                @Override
                public void onProviderDisabled(String provider) {

                }
                @Override
                public void onStatusChanged(String provider, int status, Bundle extras) {

                }
            }, getMainLooper());
        }
    });

这实现了LocationManager的侦听器,使您可以根据位置状态执行某些操作。

在您的情况下,您已在活动上实现了侦听器,因此只需尝试调用:

locationManager.requestSingleUpdate(criteria, this);

此请求只需单次更新即可显示您当前的位置

答案 2 :(得分:0)

我正在回答我的问题。我不知道它是否适用于面临同样问题的所有人。我只是想重新启动移动设备。重新启动后,它将获得正确的当前位置。所以这是一个硬件问题,虽然我认为它是代码中的东西..