【问题标题】:Current location in Google-map-API V2Google-map-API V2 中的当前位置
【发布时间】:2014-03-18 15:38:22
【问题描述】:

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

谁能帮我获取我当前的位置..

【问题讨论】:

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


    【解决方案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"/>
    

    【讨论】:

    • GPS 是否固定在您的位置上?
    • 是的。当我打开谷歌地图时,它会显示我当前的位置。
    【解决方案2】:

    当您拨打 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);
    

    此请求只是一次更新以显示您当前的位置

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-04-07
        • 2012-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多