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!"));
           }
          });

            }
        }
    }

create関数でこの関数を呼び出します

于 2013-11-30T10:29:19.390 に答える
4

私は新しいグーグルマップAPIが限られていて欠陥があるので好きではありません。あなたの場合、 LocationManagerクラスとLocationListenerクラスを使用するのが最善の方法だと思います。携帯電話が衛星を検出すると位置がわかり、地図上にマーカーを追加できます。また、場所をすばやく取得する必要がある場合は、getLastKnownLocation()メソッドを使用できます。アプリの起動時に携帯電話がその場所を知る時間があまりないため、グーグルマップのメソッドはnullを返すと思います。また、Google Maps API v2には、なんらかの方法はありません。このAPIは好きではありません。getMyLocation()onLocationChanged()

于 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 に答える