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”选项未查看启用