【问题标题】:Android Google Map not showing my location?Android Google Map 不显示我的位置?
【发布时间】: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,但我无法获得当前位置。

标签: java android google-maps gps location


【解决方案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 个查询要清除,如果我想在不模拟模拟位置的情况下显示当前位置,唯一的方法是在真实设备上进行测试,对吗?
  • 是的。在实践中,设备将获得当前位置,其准确性取决于清单中的访问位置设置。
猜你喜欢
  • 1970-01-01
  • 2022-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-08
相关资源
最近更新 更多