Android Google Map 不显示我的位置?

Posted

技术标签:

【中文标题】Android Google Map 不显示我的位置?【英文标题】:Android Google Map not showing my location? 【发布时间】:2015-07-04 07:29:06 【问题描述】:

我目前正在开发一个谷歌地图当前位置应用程序。一切都很好,没有检测到错误。

当我运行我的应用程序时,谷歌地图能够加载但不显示我的当前位置。

所以我把我的 logcat 放在这里,请有人帮助我。是否与

有关

"资产路径'/system/framework/com.android.media.remotedisplay.jar' 不存在或不包含任何资源。”

?我对此进行了一些研究,但找不到解决方案。

                      1882-1882/com.example.yan.basicmap I/art﹕ Not late-enabling -Xcheck:jni (already on)
04-25 23:40:47.534    1882-1882/com.example.yan.basicmap I/zzx﹕ Making Creator dynamically
04-25 23:40:47.536    1882-1882/com.example.yan.basicmap W/ResourcesManager﹕ Asset path '/system/framework/com.android.media.remotedisplay.jar' does not exist or contains no resources.
04-25 23:40:47.536    1882-1882/com.example.yan.basicmap W/ResourcesManager﹕ Asset path '/system/framework/com.android.location.provider.jar' does not exist or contains no resources.
04-25 23:40:47.552    1882-1894/com.example.yan.basicmap I/art﹕ WaitForGcToComplete blocked for 15.238ms for cause Background
04-25 23:40:47.698    1882-1882/com.example.yan.basicmap I/Google Maps Android API﹕ Google Play services client version: 7095000
04-25 23:40:47.908    1882-1882/com.example.yan.basicmap I/Google Maps Android API﹕ Google Play services package version: 7097470
04-25 23:40:47.912    1882-1894/com.example.yan.basicmap I/art﹕ Background sticky concurrent mark sweep GC freed 375(38KB) AllocSpace objects, 0(0B) LOS objects, 0% free, 1563KB/1563KB, paused 2.019ms total 257.132ms
04-25 23:40:48.190    1882-1894/com.example.yan.basicmap W/art﹕ Suspending all threads took: 26.203ms
04-25 23:40:48.199    1882-1894/com.example.yan.basicmap I/art﹕ Background partial concurrent mark sweep GC freed 230(18KB) AllocSpace objects, 0(0B) LOS objects, 24% free, 1630KB/2MB, paused 31.158ms total 193.459ms
04-25 23:40:48.752    1882-1894/com.example.yan.basicmap W/art﹕ Suspending all threads took: 9.022ms
04-25 23:40:48.759    1882-1894/com.example.yan.basicmap I/art﹕ Background sticky concurrent mark sweep GC freed 19138(735KB) AllocSpace objects, 2(545KB) LOS objects, 6% free, 8MB/8MB, paused 11.294ms total 74.473ms
04-25 23:40:48.945    1882-1894/com.example.yan.basicmap I/art﹕ Background sticky concurrent mark sweep GC freed 12748(531KB) AllocSpace objects, 0(0B) LOS objects, 2% free, 10MB/10MB, paused 11.798ms total 71.362ms
04-25 23:40:50.436    1882-1894/com.example.yan.basicmap I/art﹕ Background sticky concurrent mark sweep GC freed 1700(149KB) AllocSpace objects, 0(0B) LOS objects, 2% free, 10MB/10MB, paused 4.556ms total 105.593ms
04-25 23:40:50.570    1882-1894/com.example.yan.basicmap I/art﹕ Background partial concurrent mark sweep GC freed 1133(91KB) AllocSpace objects, 0(0B) LOS objects, 15% free, 10MB/12MB, paused 2.771ms total 112.451ms
04-25 23:40:50.580    1882-1916/com.example.yan.basicmap D/OpenGLRenderer﹕ Render dirty regions requested: true
04-25 23:40:50.583    1882-1882/com.example.yan.basicmap D/﹕ HostConnection::get() New Host Connection established 0xa0174c30, tid 1882
04-25 23:40:50.674    1882-1882/com.example.yan.basicmap D/Atlas﹕ Validating map...
04-25 23:40:50.700    1882-1916/com.example.yan.basicmap D/﹕ HostConnection::get() New Host Connection established 0xa015b4c0, tid 1916
04-25 23:40:50.795    1882-1916/com.example.yan.basicmap I/OpenGLRenderer﹕ Initialized EGL, version 1.4
04-25 23:40:50.888    1882-1916/com.example.yan.basicmap D/OpenGLRenderer﹕ Enabling debug mode 0
04-25 23:40:50.962    1882-1916/com.example.yan.basicmap W/EGL_emulation﹕ eglSurfaceAttrib not implemented
04-25 23:40:50.962    1882-1916/com.example.yan.basicmap W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa0f71d20, error=EGL_SUCCESS
04-25 23:40:51.140    1882-1913/com.example.yan.basicmap D/﹕ HostConnection::get() New Host Connection established 0xa0113f10, tid 1913
04-25 23:40:51.735    1882-1882/com.example.yan.basicmap I/MapsActivity﹕ Location services connected.
04-25 23:40:53.899    1882-1894/com.example.yan.basicmap I/art﹕ Background partial concurrent mark sweep GC freed 2315(140KB) AllocSpace objects, 5(827KB) LOS objects, 10% free, 16MB/18MB, paused 1.544ms total 401.616ms
04-25 23:40:59.365    1882-1894/com.example.yan.basicmap I/art﹕ Background partial concurrent mark sweep GC freed 473(30KB) AllocSpace objects, 4(5MB) LOS objects, 10% free, 16MB/18MB, paused 1.382ms total 102.324ms
04-25 23:41:01.378    1882-1882/com.example.yan.basicmap I/Google Maps Android API﹕ Google Play services package version: 7097470
04-25 23:41:01.565    1882-1916/com.example.yan.basicmap W/EGL_emulation﹕ eglSurfaceAttrib not implemented
04-25 23:41:01.565    1882-1916/com.example.yan.basicmap W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xa0f71d20, error=EGL_SUCCESS
04-25 23:41:01.708    1882-2003/com.example.yan.basicmap D/﹕ HostConnection::get() New Host Connection established 0x9f066af0, tid 2003
04-25 23:41:01.784    1882-1882/com.example.yan.basicmap I/MapsActivity﹕ Location services connected.
04-25 23:41:03.463    1882-1894/com.example.yan.basicmap I/art﹕ Background partial concurrent mark sweep GC freed 3979(232KB) AllocSpace objects, 10(5MB) LOS objects, 10% free, 17MB/19MB, paused 11.308ms total 39.779ms

【问题讨论】:

这个谷歌地图模板是什么样的?空瓷砖?我怀疑这与您的密钥有关。 我的意思是我的模拟器上的应用程序只能运行基本的谷歌地图,这与新项目完全一样->选择目标android设备->选择谷歌地图活动模板。我已经在 SDK 管理器中安装了必要的 SDK,如 google play 服务,并获得了我需要的所有权限。但我的情况是我的应用程序没有显示我当前的位置。我需要把我的代码放在这里吗? 我不会创建一个新项目来查看它。地图是否显示空白图块?或者它是否显示了西非海岸某处的地图?首先是钥匙的问题。第二个是lat,lng = (0, 0)的位置。如果是这种情况,您需要手动设置自己的位置。 地图显示在西非海岸外的某个地方,似乎这是谷歌地图的起点,纬度和经度为 0,但我无法获得当前位置。 【参考方案1】:

默认情况下,地图不会显示您的位置。位置由不同的服务提供:Google Play 位置 API(supersedesAndroid 位置 API)。

这是实现它的最少代码。 首先将这些添加到您的清单中

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

那么你需要在你的地图Activity中构建一个GoogleApiClient

public class MyMapActivity extends Activity 

 private GoogleMap googleMap;
 private GoogleApiClient mGoogleApiClient;
 protected Location mLastLocation;

  @Override
  public void onCreate(Bundle inState) 
  // do whatever initialization including one for googleMap
     mGoogleApiClient = new GoogleApiClient.Builder(this)
     .addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() 

          @Override
          public void onConnected(Bundle arg0) 
             // this is where you got your last location
             mLastLocation = LocationServices.FusedLocationApi
             .getLastLocation(mGoogleApiClient);
             // then center on map
             LatLng mLatLng = new LatLng(mLastLocation.getLatitude(),
             mLastLocation.getLongitude());
             googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom
             (mLatLng, 14), 1000, null);

           

           @Override
             public void onConnectionSuspended(int arg0) 
           

     )
     .addOnConnectionFailedListener(new GoogleApiClient.OnConnectionFailedListener() 

           @Override
           public void onConnectionFailed(ConnectionResult conResult) 
             if (conResult.hasResolution())
              try
                conResult.startResolutionForResult(MyMapActivity.this,
                CONNECTION_FAILURE_RESOLUTION_REQUEST);
               catch(SendIntentException e)
                    e.printStackTrace();
                                   
              
             )
     .addApi(LocationServices.API)
     .build();
  




  @Override
  protected void onStart() 
    super.onStart();
    mGoogleApiClient.connect();
  

  @Override
  protected void onStop() 
    super.onStop();
    mGoogleApiClient.disconnect();
  

这是official how-to 供参考。

下一个问题是您正在使用模拟器,因此您需要模拟模拟位置。此链接将更好地解释如何:How to emulate GPS location in the Android Emulator?

【讨论】:

感谢神话。最后一个链接是我正在寻找的东西,它是关于我的模拟器控制台的问题。这几天我试图以多种不同的方式解决位置问题,现在我的问题终于解决了。再次感谢!!! 我还有 1 个查询要清除,如果我想在不模拟模拟位置的情况下显示当前位置,唯一的方法是在真实设备上进行测试,对吗? 是的。在实践中,设备将获得当前位置,其准确性取决于清单中的访问位置设置。

以上是关于Android Google Map 不显示我的位置?的主要内容,如果未能解决你的问题,请参考以下文章

Google Map Android API V2 中两个位置之间的旅行时间

如何在 android 上使用 google map api 获取 google 驾驶指令?

Android Google Map API 自定义标记在自定义标记上带来谷歌地图数据

Google Developer 控制台“Google Map Android API V2”选项未查看启用

如何从我的应用程序中打开标准的 Google Map 应用程序?

在android google map v2中使标记只能点击一次