谷歌地图标记(当前位置)使应用程序崩溃,如何解决?
Posted
技术标签:
【中文标题】谷歌地图标记(当前位置)使应用程序崩溃,如何解决?【英文标题】:Google maps mark (current location) crashes the application, how to fix it? 【发布时间】:2015-06-20 15:11:02 【问题描述】:我正在尝试将当前位置标记添加到我在 android Studio 中的 android Google 地图应用程序中。
我的代码:
private void setUpMap()
Location location = null;
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
Marker marker;
marker = mMap.addMarker(new MarkerOptions().position(new LatLng((location.getLatitude()), location.getLongitude())).title("Marker"));
这会导致我的应用程序崩溃。下面有运行我的应用程序时出现的错误:
http://postimg.org/image/qrxdo9dl5/full/
(我使用postimage上传更大尺寸的屏幕截图)
在修改代码之前,我将工作代码设置为位置 0,0:
private void setUpMap()
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
然后我尝试更改位置“0,0”以读取当前纬度和经度并将其显示在我的 Google 地图上。我根据这篇文章更改了我的代码:How to get the current location in Google Maps Android API v2?
我是一名 java 初学者,非常感谢任何帮助。非常感谢您的帮助。
【问题讨论】:
您打算如何获得一个有效的Location
对象?目前您只需声明location
并将其设置为null
,因此NullPointerException
【参考方案1】:
您收到 NullPointerException,因为您的 Location 对象设置为 null。在链接的答案中,位置对象来自位置回调。
public void onMyLocationChange(Location location) // location object here
您可以像这样轻松地从地图参考中获取位置
Location location = mMap.getMyLocation();
但是,此方法已被弃用,建议使用位置 API。要从 API 获取位置,您可以按照以下指南进行操作:
https://developer.android.com/training/location/retrieve-current.html
您构建一个 GoogleApiClient,连接它,然后使用它来获取位置。
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
【讨论】:
以上是关于谷歌地图标记(当前位置)使应用程序崩溃,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章