Android Studio在Google地图中显示实际位置为Marker

时间:2016-08-02 18:26:37

标签: google-maps android-studio gps location

我希望有人可以帮助我。 我刚刚推出了测试应用程序,以便在我的设备上显示谷歌地图,现在我想将设备位置显示为标记。 该位置存储在“经度”和“纬度”中。 我如何在onMapready中使用它们?

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    Intent intent = new Intent(this,GPSTrackerActivity.class);
    startActivityForResult(intent,1);
    if(requestCode == 1){
        Bundle extras = data.getExtras();
        Double longitude = extras.getDouble("Longitude");
        Double latitude = extras.getDouble("Latitude");}}

@Override
public void onMapReady(GoogleMap googleMap) {

}

2 个答案:

答案 0 :(得分:0)

使用Google Play服务位置API,您的应用可以请求用户设备的最后已知位置。您需要Fused Location Provider API来检索设备的最后已知位置。融合位置提供商是Google Play服务中的位置API之一。它管理底层定位技术并提供简单的API,以便您可以指定高级别的要求,如高精度或低功耗。它还优化了设备对电池电量的使用。

要请求上一个已知位置,请调用getLastLocation()方法,并将其传递给GoogleApiClient对象的实例。在Google API客户端提供的onConnected()回调中执行此操作,该回调在客户端准备就绪时调用。

public class MainActivity extends ActionBarActivity implements
        ConnectionCallbacks, OnConnectionFailedListener {
    ...
    @Override
    public void onConnected(Bundle connectionHint) {
        mLastLocation = LocationServices.FusedLocationApi.getLastLocation(
                mGoogleApiClient);
        if (mLastLocation != null) {
            mLatitudeText.setText(String.valueOf(mLastLocation.getLatitude()));
            mLongitudeText.setText(String.valueOf(mLastLocation.getLongitude()));
        }
    }
}

要了解更多相关信息,请查看此documentation以及这些相关的SO问题。

答案 1 :(得分:0)

希望这可以完全解决您的问题。

    import android.support.v4.app.FragmentActivity;
    import android.os.Bundle;

    import com.google.android.gms.maps.CameraUpdateFactory;
    import com.google.android.gms.maps.GoogleMap;
    import com.google.android.gms.maps.OnMapReadyCallback;
    import com.google.android.gms.maps.SupportMapFragment;
    import com.google.android.gms.maps.model.LatLng;
    import com.google.android.gms.maps.model.MarkerOptions;


    public class MapsActivity extends FragmentActivity implements OnMapReadyCallback{

        private GoogleMap mMap;

        @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);
        }

        @Override
        public void onMapReady(GoogleMap googleMap) {
            mMap = googleMap;
            LatLng yourpostion = new LatLng(0, 0);
            mMap.addMarker(new MarkerOptions().position(yourpostion));
            mMap.moveCamera(CameraUpdateFactory.newLatLng(yourpostion));
        }
    }

     @Override
     protected void onActivityResult(int requestCode, int resultCode, Intent           data) {
        super.onActivityResult(requestCode, resultCode, data);
        Intent intent = new Intent(this,GPSTrackerActivity.class);
        startActivityForResult(intent,1);
        if(requestCode == 1){
           Bundle extras = data.getExtras();
           Double longitude = extras.getDouble("Longitude");
           Double latitude = extras.getDouble("Latitude");
           LatLng yourpostion = new LatLng(latitude, longitude);
           mMap.addMarker(new MarkerOptions().position(yourpostion));
           mMap.moveCamera(CameraUpdateFactory.newLatLng(yourpostion)); 
     }
    }