2017-05-12 55 views
0

我是新來的android和我試圖開發一個Android應用程序,其中包括跟蹤用戶位置的詳細信息,並顯示它在谷歌地圖上的位置應更新每當它改變時都映射。我無法理解如何通過google maps v2獲取此信息。他們提到改變依賴關係,但我無法找到在哪裏做的,任何人都可以用一個簡單的例子來解釋這個用法,我試圖實現下面的鏈接給出的步驟,但我無法找到項目屬性編輯 https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw位置查找器以及更新使用谷歌地圖v2

回答

2

如果你想在地圖上顯示的用戶的位置時改變自己的位置,你需要採取,定位API和谷歌地圖API,

這裏是依賴鏈接把你的應用水平格拉德爾,

dependencies { 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
    compile 'com.google.android.gms:play-services:10.0.1' 
} 

然後,您需要啓動更新loc的位置服務在地圖上的通貨膨脹也需要初始化您的地圖,

在這裏,我認爲你初始化自己的地圖,我只是展示瞭如何使用位置API,

import android.*; 
import android.Manifest; 
import android.content.Context; 
import android.content.pm.PackageManager; 
import android.location.Location; 
import android.os.Build; 
import android.os.Bundle; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.support.v4.app.ActivityCompat; 
import android.support.v4.content.ContextCompat; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import com.google.android.gms.common.ConnectionResult; 
import com.google.android.gms.common.GoogleApiAvailability; 
import com.google.android.gms.common.api.GoogleApiClient; 
import com.google.android.gms.location.LocationListener; 
import com.google.android.gms.location.LocationRequest; 
import com.google.android.gms.location.LocationServices; 
import com.google.android.gms.maps.CameraUpdateFactory; 
import com.google.android.gms.maps.model.LatLng; 

public class MainLocationActivity extends AppCompatActivity implements GoogleApiClient.ConnectionCallbacks, LocationListener, GoogleApiClient.OnConnectionFailedListener { 
    private static final float DISTANCE_FOR_FISPLACEMENT = 2; //here is the distance for update map in meter 
    private Context context; 
    private GoogleApiClient mGoogleApiClient; 
    private LocationRequest mLocationRequest; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     context=this; 
     if (checkPermsion(context)) { 
      setupLocationService(context); 
     } 
    } 

    public boolean checkPermsion(Context context) { 
     int MyVersion = Build.VERSION.SDK_INT; 
     if (MyVersion > Build.VERSION_CODES.LOLLIPOP_MR1) { 
      if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } else if (ContextCompat.checkSelfPermission(context, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } else { 
       return true; 
      } 
     } else { 
      return true; 
     } 
    } 

    private void setupLocationService(Context context) { 
     if (checkPlayServices()) { 
      mGoogleApiClient = new GoogleApiClient.Builder(context) 
        .addApi(LocationServices.API) 
//     .addApi(ActivityRecognition.API) 
        .addConnectionCallbacks(this) 
        .addOnConnectionFailedListener(this) 
        .build(); 
      createLocationRequest(); 
     } 
    } 
    protected void createLocationRequest() { 
     mLocationRequest = new LocationRequest().create() 
       .setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY) 
       .setFastestInterval(5 * 60 * 1000) 
       .setInterval(5 * 60 * 1000) 
       .setSmallestDisplacement(DISTANCE_FOR_FISPLACEMENT); 
     mGoogleApiClient.connect(); 
    } 
    private boolean checkPlayServices() { 
     GoogleApiAvailability googleAPI = GoogleApiAvailability.getInstance(); 
     int result = googleAPI.isGooglePlayServicesAvailable(this); 
     if (result != ConnectionResult.SUCCESS) { 
      return false; 
     } 
     return true; 
    } 

    @Override 
    public void onConnected(@Nullable Bundle bundle) { 
     Log.i(TAG, "Connected to onConnected"); 
     startLocationUpdates(); 
    } 

    @Override 
    public void onConnectionSuspended(int i) { 

    } 
    private void startLocationUpdates() { 
     if (mGoogleApiClient.isConnected()) { 
      if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { 
       return; 
      } 
      LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); 
     } 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     mMap.animateCamera(CameraUpdateFactory.newLatLng(new LatLng(location.getLatitude(), location.getLongitude()))); 
     // Also here you can change your pin in map 
    } 

    @Override 
    public void onConnectionFailed(@NonNull ConnectionResult connectionResult) { 

    } 
} 
+0

被添加在文件相關性足夠,或者我是否需要添加任何庫函數? – user1335906

+0

我安裝的谷歌播放服務版本39是「compile」com.google.android.gms:play-services-maps:10.0.1' compile'c​​om.google.android.gms:play-services:10.0.1 '「正確的版本 – user1335906

+0

沒有必要添加任何其他庫只是把我列出的依賴關係,如果答案將幫助然後投票並接受它, –