使用谷歌地图访问位置

时间:2017-07-11 22:18:45

标签: android

我想使用谷歌地图访问我的位置,我不知道为什么它不起作用。

public class MapsActivity extends FragmentActivity实现了OnMapReadyCallback {

private GoogleMap mMap;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);


}



@Override
public void onMapReady(GoogleMap googleMap) {
    mMap = googleMap;

    // Add a marker in Sydney and move the camera
    LatLng sydney = new LatLng(-34, 151);
    mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney"));
    mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
}

}

这是我统治模拟器时出现的内容:enter image description here

现在我尝试学习某些关于地图的信息,但最后我想按一下按钮,然后在google地图中找到餐馆的位置或者其他信息。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

这是访问设备位置的完整代码(不包括我认为您已经完成的地图关键部分)

public class MapsActivity extends FragmentActivity implements
    OnMapReadyCallback,
    GoogleApiClient.ConnectionCallbacks,
    GoogleApiClient.OnConnectionFailedListener
     {

private GoogleMap mMap;
private GoogleApiClient mGoogleApiClient;
public Location mLocation;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_maps);

    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
            .findFragmentById(R.id.map);
    mapFragment.getMapAsync(this);

    mGoogleApiClient = new GoogleApiClient.Builder(this)
            .addConnectionCallbacks(this)
            .addOnConnectionFailedListener(this)
            .addApi(LocationServices.API)
            .build();

}
@Override
public void onMapReady(GoogleMap googleMap) {

    mMap = googleMap;


}

@Override
protected void onStart() {
    mGoogleApiClient.connect();

    super.onStart();
}

@Override
protected void onStop() {
    mGoogleApiClient.disconnect();

    super.onStop();

}


public void onConnected( Bundle bundle) {


    if (mGoogleApiClient == null) {
        mGoogleApiClient = new GoogleApiClient.Builder(this).addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this).addApi(LocationServices.API).build();
    }
    if (!mGoogleApiClient.isConnected()) {
        mGoogleApiClient.connect();
    }
    Location lastLocation = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
    if (mLocation != null && mMap != null) {
        LatLng tun = new LatLng(mLocation.getLatitude(), mLocation.getLongitude());

        mMap.addMarker(new MarkerOptions().position(tun).title("Marker in Sydney"));


    }


}

         @Override
         public void onConnectionSuspended(int i) {

         }

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

         }
     }

你必须在manifest.xml中编写这段代码

  <uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

这将允许应用程序能够使用设备的位置

唯一剩下的就是你必须通过转到权限菜单中的应用程序设置来获取位置的访问权限允许应用程序进行GPS定位,在其他情况下它不会显示位置

答案 1 :(得分:0)

&#39; com.google.android.gms:播放服务:11.0.2&#39; 你必须编译播放服务才能访问LocationListener

答案 2 :(得分:0)

您是否在清单

中添加了访问位置权限