我希望有人可以帮助我。 我刚刚推出了测试应用程序,以便在我的设备上显示谷歌地图,现在我想将设备位置显示为标记。 该位置存储在“经度”和“纬度”中。 我如何在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) {
}
答案 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));
}
}