11

我正在创建一个应用程序,用户需要使用 getMyLocation() 查看他/她的地理位置,但这会返回 null。是否有任何解决方案,因为我确实读到 getMyLocation() 方法总是返回 null。我是谷歌地图的新手,所以任何帮助将不胜感激!

代码:

GoogleMap map = ((SupportMapFragment)  getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_HYBRID);
map.setMyLocationEnabled(true);
Location myLocation = map.getMyLocation();

if( myLocation != null ){
    helper.showToast( "Latitude: " + myLocation.getLatitude() + "\nLongitude: " + myLocation.getLongitude() );
}
4

5 回答 5

14
private void setUpMapIfNeeded() {
        // Do a null check to confirm that we have not already instantiated the map.
        if (mMap == null) {
            // Try to obtain the map from the SupportMapFragment.
            mMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map))
                    .getMap();
            mMap.setMyLocationEnabled(true);
            // Check if we were successful in obtaining the map.
            if (mMap != null) {


             mMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {

           @Override
           public void onMyLocationChange(Location arg0) {
            // TODO Auto-generated method stub

             mMap.addMarker(new MarkerOptions().position(new LatLng(arg0.getLatitude(), arg0.getLongitude())).title("It's Me!"));
           }
          });

            }
        }
    }

在创建函数中调用此函数

于 2013-11-30T10:29:19.390 回答
4

我不喜欢新的谷歌地图 API,因为它们的局限性和缺陷。在您的情况下,我认为最好的方法是使用LocationManagerLocationListener类。当您的手机找到卫星时,您将获得位置,然后您可以在地图上添加标记。如果您需要快速获取位置,也可以使用getLastKnownLocation()方法。我认为谷歌地图getMyLocation()方法返回 null 因为手机没有太多时间知道它的位置,当应用程序启动时。在 Google Maps API v2 中没有某种onLocationChanged()方法。我不喜欢这个 API。

于 2013-01-21T12:19:36.030 回答
1

map.getMyLocation() return null因为没有位置onCreate();

第一次获取地图位置是在第一个 onCameraChange() 事件之后。

所以用

map.setOnCameraChangeListener( new ...)

在您的地图上并在第一次发生后执行您的实施

于 2014-09-06T23:30:17.127 回答
1

我已经这样做了:

private GoogleMap mGoogleMap;
private SupportMapFragment mMapFragment;

onCreate()上:

mMapFragment = (SupportMapFragment) getFragmentManager().findFragmentById(R.id.map);
mGoogleMap = mMapFragment.getMap();

mGoogleMap.setOnMyLocationChangeListener(myLocationChangeListener);

现在添加MyLocationChangeListener

private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
    @Override
    public void onMyLocationChange(Location location) {
      Log.i(TAG, "Latitude: "+String.valueOf(location.getLatitude())+" - Longitude: "+String.valueOf(location.getLongitude()));
   }
};

希望这会帮助你。

于 2015-08-03T08:51:01.487 回答
0

请检查示例代码Google Maps Android API v2,使用它您将解决您的问题。

示例代码

于 2013-01-21T12:50:01.600 回答